У меня есть приложение Rails, которое я разрабатываю для Windows и внедряю в Linux. Я подозреваю, что в будущем просто полностью переключусь на Linux. В любом случае, в Linux мне нужны execjs и therubyracer, но в Win7 они мне не нужны. Поэтому я поместил эти строки в свой gemfile:
gem 'therubyracer', :platforms => :ruby
gem 'execjs', :platforms => :ruby
Запустил bundle install
на виртуальной машине Linux, и приложение запустилось нормально. Но на Windows я получаю:
Uncaught exception: Could not find execjs-1.2.11 in any of the sources
Теперь, из того, что я прочитал ( здесь в разделе PLATFORMS), он говорит мне, что «Если гем должен использоваться только на определенной платформе или наборе платформ, вы можете указать их», это:
gem "weakling", :platforms => :jruby
И там написано "ruby C Ruby (MRI) or Rubinius, but NOT Windows
". Так что для меня это говорит о том, что упаковщик должен игнорировать строку execjs
в Windows. Однако в Windows, когда я запустил bundle install
, я увидел это:
Installing execjs (1.2.11)
Итак, это говорит мне, что я что-то упускаю из-за того, что документация или упаковщик игнорируют команду платформы. Я делаю что-то неправильно?
PS>bundle -v
Bundler version 1.0.21