位置:首页 > Ruby > Ruby on Rails网站项目搭建入门指南

Ruby on Rails网站项目搭建入门指南

时间:2026-08-18  |  作者:半糖攻略君  |  阅读:0

在开始一个 Rails 项目之前,很多人会先纠结一个问题:怎么搭建?

其实步骤并不复杂,但国内开发者往往会卡在第一步——网络环境。

下面就把整个流程拆开来讲,希望能帮你少走些弯路。

创建 Rails 项目

Ruby on Rails网站项目构建简单指南

创建一个普通的 Rails 项目,直接用以下命令即可:

rails new blog

但在国内连接 RubyGems 的速度往往很慢,容易卡住。

Rails 默认在项目骨架生成后,会用 bundle 从 RubyGems 下载依赖包,因此第一步建议先跳过这一步。

更稳妥的做法是加上 --skip-bundle 参数。

后续再使用 Ruby China 提供的源:https://gems.ruby-china.org/ 安装依赖。

实际操作步骤

  • 创建项目并跳过 bundle
rails new blog --skip-bundle
  • 修改项目目录里的 Gemfile 文件,把第一行 source 后面引号里的地址换成 https://gems.ruby-china.org/
  • 在项目目录下执行 bundle install,完成依赖安装。

到此为止,一个标准的 Rails 项目骨架就搭好了。

配置 Rails 项目

骨架虽然能用,但实际开发中通常还需要按需求调整配置。

比如时区、数据库这些,默认值往往不是我们想要的。

设置时区

Rails 默认使用 UTC 时区。

如果项目只在国内运行,所有时间数据都会比北京时间晚 8 个小时,这显然不合适。

所以除非是国际性项目,否则建议改成国内时区。

打开 config/application.rb,找到 config.time_zone 配置项,去掉注释,把值改成 Beijing,再额外加一行:

config.active_record.default_timezone = :local

这样 Rails 在读写数据库时也会使用本地时间。

使用 MySQL

默认使用的是 SQLite。

如果你要切到 MySQL,先装好 MySQL 的程序包,然后修改数据库配置。

先打开 Gemfile,添加一个全局依赖:

gem 'mysql2'

然后执行 bundle install 把包装上。

接着打开 config/database.yml,把 development 区块改成类似下面的样子:

development:
 adapter: mysql2
 database: blog
 username: root
 password:
 host: 127.0.0.1

密码根据实际情况填写,其他环境(test、production)也类似处理。

创建 Rails 文档

对于老手来说,这一步可能可有可无。

但新手经常会翻手册找方法,网速不好或者离线的时候尤其麻烦。

Rails 提供了在项目里生成本地文档和 API 文档的命令,把资料放到本地会方便很多。

首先需要加一个依赖包:redcarpet

因为它只在本地开发时使用,所以不用放到全局依赖。

找到 Gemfile 底部的 development 配置块,加进去:

gem 'redcarpet', '~> 3.1.2'

然后执行 bundle install 安装。

接着执行下面两条命令:

rake doc:guides
rake doc:rails

文档会自动生成到 doc 目录。

之后直接用本地浏览器打开就能查阅。

在 Rails 中创建自定义命令

开发 Web 应用时,经常需要在终端执行一些脚本来处理特定任务。

比如从一个大文件里导入数据。

Rails 处理这类需求非常轻量,下面举个简单例子。

lib/tasks 目录下新建一个 hello.rake 文件,内容如下:

namespace :hello do
 task :world do
  puts "Hello, World!"
 end
end

这样就定义了一个打招呼的任务。

运行它只要使用 rake 命令:

rake hello:world

不过默认情况下,这个脚本不能直接访问项目里的模型、数据库等内容。

如果想让脚本调用项目里的模块,也很简单:加上 => :environment 就行。

比如想给所有客户打个招呼:

namespace :hello do

 # ...

 task :customers => :environment do
  for customer in Customer.all
    puts sprintf("hello, %s", customer.name)
  end
 end
end

如果你的项目里正好有 Customer 模型,而且它有 name 字段,那么直接执行 rake hello:customers 就能看到效果。

和第一个任务相比,关键区别就是多了 => :environment

它负责把整个 Rails 环境加载进来。

是不是很简单?

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多