我正在将我们的一款Rails 2.3.8应用升级到Rails 3,但在绑定器和部署方面遇到了一个恼人的问题.我在Windows机器上开发应用程序,但生产环境运行的是Ubuntu Linux.现在,我的问题是bundler忽略了生产环境中的mysql
颗Ruby ,乘客吐出:"!!! Missing the mysql gem. Add it to your Gemfile: gem 'mysql', '2.8.1'"
这是我的Gemfile
:
# Edit this Gemfile to bundle your application's dependencies.
# This preamble is the current preamble for Rails 3 apps; edit as needed.
source 'http://rubygems.org'
gem 'rails', '3.0.0'
gem 'net-ldap', :require => 'net/ldap'
gem 'highline', :require => 'highline/import'
gem 'mysql', '2.8.1'
gem 'net-ssh', :require => 'net/ssh'
# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
group :development, :test do
gem 'fakeweb', :require => 'fakeweb'
gem 'flexmock', :require => 'flexmock/test_unit'
end
如你所见,mysql
颗Ruby 是指定的.然而,在部署时,bundler会忽略它.为什么?原因是Bundler生成以下Gemfile.lock
(仅包含相关部分):
....
mime-types (1.16)
mysql (2.8.1-x86-mingw32)
net-ldap (0.1.1)
....
请注意,它包括特定于平台的gem.这显然不是我想要它做的,因为当在Linux下运行时,gem不适合(而且似乎被忽略).
那么,Bundler有没有办法解决这些问题?还是每次在开发机器上运行bundle install时,我都必须记住手动更改生成的Gemfile.lock
中的mysql gem版本?
提前谢谢!
Update
bundler团队似乎意识到了这一点.