"是否有效?-6ren"> "是否有效?-我有一个在 Windows 上开发并部署到 Linux 的 Rails 应用程序。我怀疑我将来会完全切换到 Linux。无论如何,在 Linux 上我需要“execjs”和“therubyracer”-6ren">
gpt4 book ai didi

ruby - 在您的 gemfile 中使用 ":platforms =>"是否有效?

转载 作者:数据小太阳 更新时间:2023-10-29 06:36:18 25 4
gpt4 key购买 nike

我有一个在 Windows 上开发并部署到 Linux 的 Rails 应用程序。我怀疑我将来会完全切换到 Linux。无论如何,在 Linux 上我需要“execjs”和“therubyracer”,但在 Win7 中我不需要它们。所以我将这些行放在我的 gemfile 中:

gem 'therubyracer', :platforms => :ruby
gem 'execjs', :platforms => :ruby

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

未捕获的异常:无法在任何源中找到 execjs-1.2.11

现在,从我读到的内容(平台下的 here)它告诉我“如果一个 gem 应该只用于一个特定的平台或一组平台,你可以指定它们”,示例是这样的:

gem "weakling",   :platforms => :jruby 

它说“ruby C Ruby (MRI) 或 Rubinius,但不是 Windows”。所以对我来说, bundler 应该忽略 Windows 上的 execjs 行。但是在 Windows 上,当我运行 bundle install 时,我看到了这个:

Installing execjs (1.2.11)

所以这对我来说是我遗漏了一些关于文档的信息,或者 bundler 忽略了平台命令。难道我做错了什么?

PS>bundle -v
Bundler version 1.0.21

最佳答案

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

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

您还会注意到 ruby -e 'puts RUBY_PLATFORM' 输出 i386-cygwin,而不是 i386-mingw32 i386-mswin 就像在 Windows ruby​​ 上一样。

您是否在 cygwin 环境中工作?

关于ruby - 在您的 gemfile 中使用 ":platforms =>"是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8421321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com