## 自动识别
### **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](https://github.com/ddollar/rails_log_stdout/blob/master/init.rb): 确保 Rails 的日志被发送到 STDOUT
[rails3_serve_static_assets](https://github.com/pedro/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
~~~
- 介绍
- 从这里开始
- 注册
- 登陆
- 云帮界面
- 功能介绍
- 新增应用
- 从镜像
- 从源码
- 应用市场
- 应用框架
- 我的应用
- 界面介绍
- 应用控制台
- 概览
- 依赖
- 监控
- 日志
- 设置
- 费用
- 端口
- 存储
- 扩容
- 总览
- 团队
- 财务中心
- 帐户充值
- 应用扣费
- 批量续费
- 语言支持
- 概述
- Java
- java-maven
- java-war
- java-jar
- web程序部署
- 使用Webapp Runner部署
- 使用Jetty Runner部署
- 示例代码
- gradle
- Scala
- play
- Ruby
- 语言支持
- ruby应用部署
- Rails 应用概述
- 部署Rails3.x应用
- 使用Puma 部署 Rails 应用
- 示例代码
- Python
- 语言支持
- Web框架支持
- 示例代码
- PHP
- 平台特性
- 语言支持
- 运行环境设置与调优
- 部署ThinkPHP框架程序
- 示例代码
- Go
- 语言支持
- 部署Beego等框架程序
- 示例代码
- Node.JS
- 语言支持
- 示例代码
- Html
- 语言支持
- 示例代码
- Dockerfile
- 语言支持
- 示例代码
- 相关文档
- Procfile
- Cron计划任务
- 参考知识
- 好雨Gogs使用说明
- Artifactory对接本地仓库
- 好雨如何对接Git Server
- Git使用技巧
- 服务框架支持
- dubbo
- springcloud
- 技术支持