文字

自动识别

Rails 2.x

当 Gemfile.lock 文件包含 rails gem,并且版本大于等于 2.0.0 小于 3.0.0 的时候,应用 会被识别为 Rails 2.x 应用,在部署的时候可以看到 ——-> Ruby/Rails app detected 输出。

Rails 3.x

当 Gemfile.lock 文件包含 railties gem,并且版本大于等于 3.0.0 小于 4.0.0 的时候,应用 会被识别为 Rails 3.x 应用,在部署的时候可以看到 ——-> Ruby/Rails app detected 输出。

Rails 4.x

当 Gemfile.lock 文件包含 railties gem,并且版本大于等于 4.0.0.beta 小于 5.0.0 的时候,应用 会被识别为 Rails 4.x 应用,在部署的时候可以看到 ——-> Ruby/Rails app detected 输出。

数据库配置

目前好雨云平台支持MySQL数据库,用户可以通过创建MySQL服务并关联Ruby 应用来使用。请参阅 创建应用 和 依赖关系 文档

先利用phpmyadmin创建数据库 myapp

修改数据库配置

以 Rails 4.x 为例

  • config/database.yml
    production:
    adapter: mysql2
    encoding: utf8
    host: <%= ENV['MYSQL_HOST'] %>
    port: <%= ENV['MYSQL_PORT'] %>
    database: myapp
    username: <%= ENV['MYSQL_USER'] %>
    password: <%= ENV['MYSQL_PASSWORD'] %>
    pool: 5

说明

  • database 配置的myapp数据库必须提前创建

运行

所有 Rails 应用在平台运行时都会被设置以下环境变量

RAILS_ENV="production"
RACK_ENV="production"

Rails 2.x 默认的启动命令为

web: bundle exec ruby script/server -p $PORT

Rails 3.x 默认的启动命令为:

web: bundle exec rails server -p $PORT

Rails 4.x 默认的启动命令为:

web: bundle exec bin/rails server -p $PORT -e $RAILS_ENV

注意

虽然针对 Rails 的每个版本都有默认的 web 服务器启动命令,但是我们强烈推荐在正式生产环境中使用Puma 作为 web 服务器。

执行 Rake 任务

可以通过制定Procfile文件的形式来执行Rake任务,例如下面的启动命令会执行
db:migrate 任务并启动 Rails:

web: bundle exec rake db:migrate && bundle exec rails s -b 127.0.0.1 -p $PORT

构建

Rails 3.x

系统会在最后的阶段执行 assets:precompile 任务来编译静态文件到 public/assets 目录。

用户也可以选择在本地执行 RAILS_ENV=production bundle exec rake assets:precompile
编译静态文件并把编译后的结构 push 到版本控制,但 不推荐 这样做。如果系统检测到了 public/assets/manifest.yml
文件,将会认为你已经在本地编译了静态文件,不再执行编译。

为防止在编译静态文件时初始化应用和连接到数据库,推荐在 config/application.rb 文件里添加配置:

config.assets.initialize_on_precompile = false


提示:在 Rails 4.x 中,config.assets.initialize_on_precompile 选项已被移除,不需要配置。
插件注入

rails_stdout_logging: 确保 Rails 的日志被发送到 STDOUT
rails3_serve_static_assets:让 Rails 3 支持托管静态文件
如果应用的 Gemfile 里包含了 rails_12factor,系统将不再进行插件注入。

Rails 4.x

和 Rails 3.x 类似,系统也会为应用执行 assets:precompile任务,但条件为:应用定义了 assets:precompile 任务
并且不存在 public/assets/manifest-*.json 文件,如果此任务执行失败,部署也会失败。

同样,用户也可以在本地编译静态文件并推送到版本控制,系统如果检测到 public/assets/manifest-*.json文件,
将会认为用户已编译静态文件,不再执行编译(不推荐)。

插件注入

Rails 4 不再支持插件机制,所以需要换种方式来达到和前面的插件注入类似的效果:使用 rails_12factor gem
此操作需要用户执行,如果部署时系统没有检测到 rails_12factor gem,将会发出警告。

添加以下内容到 Gemfile,然后执行 bundle install


gem 'rails_12factor', group: :production

默认情况下,Rails 不支持托管静态文件,rails_12factor 包含了 rails_serve_static_assets
此 gem 可以使 Rails 具有此能力,只需添加配置:


config.serve_static_assets = true
上一篇: 下一篇:
  页面正在加载中