语言识别

若要支持平台的 一键部署 功能,代码的根目录下必须有 Gemfile 文件,即使没有任何 gem 依赖,也需要一个空的 Gemfile。

针对不同的ruby web开发框架有如下识别方式:

  • 源码根目录存在 config.ru 文件,会被识别为 Rack 应用。
  • 源码跟目录存在 config/environment.rb 文件,会被识别为Rails 2 应用。
  • 源码根目录存在 config/application.rb文件且文件中包含Rails::Application 字符串,会被识别为Rails 3/Rails 4 应用。

运行环境

bundler的版本是平台用来管理和运行 Ruby 应用的,用户无法指定版本。

目前平台使用 Bundler 1.7.12 版本。

环境变量

ruby应用在好雨云平台运行时,下列环境变量将被设置:

  • GEM_PATH => vendor/bundle/#{RUBY_ENGINE}/#{RUBY_ABI_VERSION}
  • LANG => en-us
  • PATH => bin:vendor/bundle/#{RUBY_ENGINE}/#{RUBY_ABI_VERSION}/bin:/usr/local/bin:/usr/bin:/bin
  • GEM_PATH 被设置为 bundler gem vendor 目录

构建(build)

当应用部署时,会触发构建行为,这时 RAILS_ENV 或 RACK_ENV 变量被设置为 production 。Rails 4.1+ 版本 可以通过DATABASE_URL环境变量设置database.yml文件中的 url 来配置数据库。目前好雨云平台还未支持该特性,后续会支持。

更多关于数据库的配置参见:Rails应用概述中的数据库配置部分

默认的 Ruby 版本

系统默认会使用 Ruby 2.0.0。当然,你也可以自己指定一个要使用的版本,我们支持大部分的 ruby 版本。

支持的运行时环境

MRI:

  • 1.8.7 : patchlevel 376, Rubygems : 1.8.24
  • 1.9.2 : patchlevel 327, Rubygems : 1.3.7.1
  • 1.9.3 : patchlevel 547, Rubygems : 1.8.23.2
  • 2.0.0 : patchlevel 576, Rubygems : 2.0.14
  • 2.1.6 : patchlevel 336, Rubygems : 2.2.2
  • 2.2.2 : patchlevel 95, Rubygems: ; 2.4.5

注意:Ruby 1.8.7 和 Ruby 1.9.2 官方已经停止支持,不再提供更新,不推荐使用

JRuby:

  • 1.7.20, Ruby 版本: [1.9.3], Java 版本:1.7.0_45-b31

可用的运行时环境

一些其它版本的 JRuby 也在支持范围内。

JRuby:

  • 1.7.1, Ruby 版本: [1.8.7, 1.9.3], Java 版本: 1.7.0_25-b30
  • 1.7.2, Ruby 版本: [1.8.7, 1.9.3], Java 版本: 1.7.0_25>b30
  • 1.7.3, Ruby 版本: [1.8.7, 1.9.3], Java 版本: 1.7.0_25-b30
  • 1.7.4, Ruby 版本: [1.8.7, 1.9.3], Java 版本: 1.7.0_45-b31
  • 1.7.5, Ruby 版本: [1.8.7, 1.9.3, 2.0.0 (experimental)], Java 版本: 1.7.0_45-b31
  • 1.7.6, Ruby 版本: [1.8.7, 1.9.3, 2.0.0 (experimental)], Java 版本: 1.7.0_45-b31
  • 1.7.8, Ruby 版本: [1.8.7, 1.9.3, 2.0.0 (experimental)], Java 版本: 1.7.0_45-b31
  • 1.7.9, Ruby 版本: [1.8.7, 1.9.3, 2.0.0 (experimental)], Java 版本: 1.7.0_45-b31
  • 1.7.10, Ruby 版本: [1.8.7, 1.9.3, 2.0.0 (experimental)], Java 版本: 1.7.0_45-b31
  • 1.7.11, Ruby 版本: [1.8.7, 1.9.3, 2.0.0 (experimental)], Java 版本: 1.7.0_45-b31
  • 1.7.12, Ruby 版本: [1.8.7, 1.9.3, 2.0.0 (experimental)], Java 版本: 1.7.0_45-b31
  • 1.7.13, Ruby 版本: [1.8.7, 1.9.3, 2.0.0 (experimental)], Java 版本: 1.7.0_45-b31
  • 1.7.14, Ruby 版本: [1.8.7, 1.9.3, 2.0.0 (experimental)], Java 版本: 1.7.0_45-b31
  • 1.7.15, Ruby 版本: [1.8.7, 2.0.0 (experimental)], Java 版本: 1.7.0_45-b31
  • 1.7.16, Ruby 版本: [1.8.7, 2.0.0 (experimental)], Java 版本: 1.7.0_45-b31
  • 1.7.17, Ruby 版本: [1.8.7, 1.9.3], Java 版本: 7u45 (cedar), 8u40
  • 1.7.18, Ruby 版本: [1.8.7, 1.9.3, 2.0.0 (experimental)], Java 版本: 7u45 (cedar), 8u40
  • 1.7.19, Ruby 版本: [1.8.7, 1.9.3, 2.0.0 (experimental)], Java 版本: 7u79, 8u40
  • 1.7.20, Ruby 版本: [1.8.7, 1.9.3, 2.0.0 (experimental)], Java 版本: 7u79, 8u40
  • 9.0.0.0.pre1, Ruby 版本: [2.2.0], Java 版本: 8u40 (cedar-14)
  • 9.0.0.0.pre2, Ruby 版本: [2.2.2], Java 版本: 8u40 (cedar-14)

选择Ruby版本

在 Gemfile 里指定 Ruby 版本


source "https://ruby.taobao.org" 
ruby "1.9.3"

注意

>#####由于国外的gem源速度比较慢,推荐使用淘宝的gem源

如果要指定非 MRI 的 ruby 引擎,需要使用 :engine 和 :engine_version 选项。你可以通过下面这行指定 JRuby :

ruby "1.9.3", :engine ="jruby", :engine_version ="1.7.8"

也可以通过在程序中执行以下 Ruby 代码指定版本


ruby ENV['CUSTOM_RUBY_VERSION'] || '2.0.0'