ruby-on-rails - 在 Windows 和 Linux/OS X 的 Gemfile 中指定不同的 Ruby 版本(例如 1.9.3 与 2.1)?

标签 ruby-on-rails ruby linux windows rubygems

我在一个 Ruby on Rails 项目上,我们有 Windows 和 Linux 计算机。该项目使用 Ruby 2.1,但作为 windows 开发人员,我需要使用较低版本的 Ruby,如 ruby​​ 1.9.3 或 Ruby 2.0,以便顺利进行本地开发工作。

因此,为了自动基于平台为我的 Rails 项目实现自定义 Ruby 版本,我尝试修改 Gemfile 以便为每个平台隔离不同的 Gem 和 Ruby 版本:

platforms :ruby do # linux & Mac only
  ruby '2.1.0' #doesn't work, still tries to load ruby 1.9.3
  gem 'puma', '~> 2.7.1' #works
end

platforms :mswin do #Windows only
  ruby '1.9.3' #doesn't work, overrides Linux/mac users to Ruby 1.9.3 rather than 2.1
  gem 'thin' # works
end

platforms :rubyplatforms :mswin 显然只适用于指定 Gems,不适用于指定 Ruby 版本。如何设置我的本地 Windows 开发环境,以便我可以在同一个 Gemfile 中自动处理较低/不同的 Ruby 版本而不影响我的同事?

备注:

.rubyversion 读取 2.1.0 虽然我可以 .gitignore 这个文件为每个环境指定,但 Heroku 要求我们指定一个 Ruby Gemfile 中的版本——所以我们需要一些方法在 Gemfile 级别解决这个问题。

最佳答案

Gemfile 是用 Ruby 实现的 DSL,所以你可以在这里调用 Ruby 代码:

ruby RUBY_PLATFROM =~ /win/ ? '1.9.2' : '2.1.0'

关于ruby-on-rails - 在 Windows 和 Linux/OS X 的 Gemfile 中指定不同的 Ruby 版本(例如 1.9.3 与 2.1)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24743542/

相关文章:

ruby-on-rails - 使用 rmagick 将图像数据写入 ruby​​ 文件

ruby-on-rails - Boolean Enum throws Action can't be blank for false value in Rails-Admin

ruby-on-rails - 在 ruby​​ 脚本中调用命令

ruby - 对于 ruby​​ 中的深度命名空间,如何最好地管理编码风格和作用域运算符的烦恼?

linux - 将多行记录的日志文件中的数据提取到 CSV

linux - 用于在 Bash 中检查二进制传输的 ASCII 空间的正则表达式

ruby-on-rails - 为什么内容会超出其基础 5 div 容器,我该如何解决?

ruby - 在 Ruby 中从数组的一个点到同一数组的另一个点求和

linux - 系统调用 : difference between sys_exit(), SYS_exit 和 exit()

ruby-on-rails - 在 ruby​​ on rails 项目中向 stdlib 类添加扩展