在两个平台之间开发时的Gemfile

时间:2013-01-07 09:19:42

标签: ruby ruby-on-rails-3 windows-7 if-statement gemfile

我正在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语句没有用,或者我的bootstrap.css.less文件存在问题,因为我在我的linux分支中使用它

我怎样才能让它工作,所以要么在两个平台上工作较少,要么让窗户忽略较少的宝石

有人在此之前解决了这个问题

更新

好的,所以我发现如果我指定

:platform => :ruby 

在less-rails gem之后它会忽略它(虽然我不得不添加到execjs和rubyracer),因为js运行时冲突。所以问题仍然是我的IF / ELSE语句出了什么问题

由于

1 个答案:

答案 0 :(得分:1)

您是否重建了捆绑锁定文件?

在Windows计算机上试试这个:

bundle install
bundle update

要了解有关bundle,Gemfile,Gemfile.lock以及切换平台时需要重建锁定的原因:http://gembundler.com/rationale.html