2

Windows マシンと Linux マシンの間で Ruby on Rails アプリの開発を行っています。理想的ではありませんが、Ruby on Windows は大幅に改善されました。とにかく、IFステートメントを実装できることを読んだので、たとえばこれを実装しました

 source 'https://rubygems.org'

 if RUBY_PLATFORM =~ /win32/

 gem 'rails', '3.2.3'
 gem 'sqlite3'

 group :assets do
 gem 'sass-rails',   '~> 3.2.3'
 gem 'coffee-rails', '~> 3.2.1'
 gem 'twitter-bootstrap-rails', :git => 'git://github.com/seyhunak/twitter-bootstrap-rails.git'
 gem 'uglifier', '>= 1.0.3'
 end

 gem 'jquery-rails'
 gem 'nokogiri'
 gem 'httparty'
 gem 'devise'

 else

gem 'rails', '3.2.3'
gem 'sqlite3', '1.3.6'

group :assets do
gem 'sass-rails',   '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'twitter-bootstrap-rails', :git => 'git://github.com/seyhunak/twitter-bootstrap-rails.git'
gem 'less-rails'
gem 'uglifier', '>= 1.0.3'
gem 'execjs'
gem 'therubyracer', '0.10.2'
end

gem 'jquery-rails'
gem 'nokogiri'
gem 'httparty'
gem 'devise'

end

だから今朝、Linuxブランチをマスターブランチ(Windows)にマージしたところ、メッセージが表示されました

Could not find the less-rails in any of the sources

そのため、IFステートメントが機能していないか、Linuxブランチでこれを使用しているため、資産のbootstrap.css.lessファイルに問題があるようです

これを機能させるにはどうすればよいので、両方のプラットフォームでの作業を減らすか、ウィンドウに少ない宝石を無視させます

誰かが前にこれを回避しましたか

アップデート

わかりましたので、指定した場合

:platform => :ruby 

less-rails gemの後、jsランタイムの競合のために無視されます(ただし、execjsとrubyracerにも追加する必要がありました)..したがって、IF / ELSEステートメントの何が問題なのかについてはまだ疑問が残っています

ありがとう

4

1 に答える 1

1

バンドル ロック ファイルを再構築しましたか?

Windowsマシンでこれを試してください:

bundle install
bundle update

bundle、Gemfile、Gemfile.lock、およびプラットフォームを切り替えるときにロックを再構築する必要がある理由については、http://gembundler.com/rationale.html をご覧ください。

于 2013-01-07T15:48:07.767 に答える