商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Ruby on Rails网站项目构建简单指南

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

  发布于2026-06-29 阅读(0)

扫一扫,手机访问

在开始一个 Rails 项目之前,很多人会先纠结一个问题:怎么搭建?其实步骤并不复杂,但国内开发者往往会卡在第一步——网络环境。下面就把整个流程拆开来讲,希望能帮你少走些弯路。

创建 Rails 项目

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

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

rails new blog

但问题来了——在国内连接 RubyGems 的速度实在让人抓狂。Rails 默认在项目骨架生成后,会用 bundle 从 RubyGems 下载依赖包,结果经常卡死。所以第一件事就是绕过它:加上 --skip-bundle 参数,先跳过这一步。后续咱再用国内的镜像源来装包。目前国内比较靠谱的是 Ruby China 提供的源:https://gems.ruby-china.org/

实际操作步骤整理如下:

  1. 创建项目(跳过 bundle)
rails new blog --skip-bundle
  1. 修改项目目录里的 Gemfile 文件,把第一行 source 后面引号里的地址换成 https://gems.ruby-china.org/
  2. 在项目目录下执行 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 环境加载进来。是不是很简单?

本文转载于:https://www.jb51.net/article/86869.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

产品推荐

热门关注