2

我正在 Windows 机器和 linux 机器之间开发 Ruby on Rails 应用程序。不理想,但 Windows 上的 Ruby 改进了很多。无论如何,我读到你可以实现一个 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 分支合并到 master 分支(windows)中,现在我收到了消息

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

因此,当我在我的 linux 分支中使用它时,似乎 IF 语句不起作用或者资产中的 bootstrap.css.less 文件存在问题

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

有没有人解决过这个问题

更新

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

:platform => :ruby 

由于 js 运行时冲突,在 less-rails gem 之后它忽略了它(尽管我不得不添加到 execjs 和 ruby​​racer 中)。所以关于我的 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 回答