首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在gemfile中使用":platforms =>“行吗?

在gemfile中使用":platforms =>“行吗?
EN

Stack Overflow用户
提问于 2011-12-08 03:30:25
回答 8查看 19.5K关注 0票数 19

我有一个Rails应用程序,我正在Windows上开发并部署到Linux上。我想我将来会完全切换到Linux。不管怎样,在Linux上我需要'execjs‘和'therubyracer’,但在Win7中我不需要它们。所以我把下面这几行放到了我的gemfile中:

代码语言:javascript
复制
gem 'therubyracer', :platforms => :ruby
gem 'execjs', :platforms => :ruby

在Linux虚拟机上运行bundle install,应用程序启动正常。但在Windows上我得到:

Uncaught exception: Could not find execjs-1.2.11 in any of the sources

现在,根据我所读到的( platforms下的here),它告诉我“如果一个gem只应该在一个或一组特定的平台上使用,您可以指定它们”,示例如下:

代码语言:javascript
复制
gem "weakling",   :platforms => :jruby 

上面写着"ruby C Ruby (MRI) or Rubinius, but NOT Windows“。所以在我看来,bundler应该忽略Windows上的execjs行。然而,在Windows上,当我运行bundle install时,我看到了以下内容:

代码语言:javascript
复制
Installing execjs (1.2.11)

所以对我来说,这意味着我遗漏了一些关于docs的东西,或者bundler忽略了platform命令。我做错了什么吗?

代码语言:javascript
复制
PS>bundle -v
Bundler version 1.0.21
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-07-19 22:44:18

:platforms => :ruby确实排除了gem在Windows上的安装。

但是,它在cygwin环境中不起作用。在cygwin中,它认为平台是:mri。

您还会注意到,ruby -e 'puts RUBY_PLATFORM'输出的是i386-cygwin,而不是Windows ruby上的i386-mingw32i386-mswin

你是在cygwin环境中工作吗?

票数 21
EN

Stack Overflow用户

发布于 2011-12-11 02:13:13

将如下代码添加到Gemfile,该代码根据操作系统平台排除/包含gem

代码语言:javascript
复制
if RUBY_PLATFORM=~ /win32/ 
   gem "windows-only-gem"
else
   gem "os-agnostic-gem"
end
票数 9
EN

Stack Overflow用户

发布于 2018-02-24 22:58:07

Rails 5:

代码语言:javascript
复制
if Gem.win_platform?
  # Install gem for Windows
else
  # Install another gem
end
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8421321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档