我开始尝试使用Rails 4进行工作,我们在服务器上使用MySQL2 3.1.0 gem。
在本地使用Ruby 2.0,我安装了MySQL2 3.1.0 Gem,一切都很好(在工作服务器上匹配gem版本基本上只是为了匹配生产服务器环境)。
当我创建一个新的应用程序(ruby new r4_test -d mysql)时,我遇到了一个问题。 Bundler在新的应用程序创建过程中崩溃,抱怨缺少MySQL2 3.1.3文件。它看起来像3.1.3(3个月前发布,如果我看起来正确)是MySQL2宝石的最高版本号。我对此感到困惑,因为Ruby文件夹中安装的唯一MySQL2版本是3.1.0版。为什么Bundler会忽略已安装的gem并期望更高版本未在本地安装?我跳过了Rails3所以我是Bundler的新手。它似乎不应该期待一个不是本地的版本。有时会出现错误或其他问题,您需要暂时保留旧版本的gem。 ?
谢谢!
答案 0 :(得分:0)
如果您的项目目录中还没有Gemfile.lock
,Bundler会尝试安装符合Gemfile
中版本条件的最新版本。因此,对于新的Rails项目,它将尝试安装默认生成的Gemfile
的最新依赖项。除非您已经拥有Gemfile.lock
,否则它实际上并不会查看已安装的宝石。
如果您不希望Rails在创建新项目时运行--skip-bundle
,则可以使用-B
(或bundle install
)。这使您有机会首先自定义Gemfile
。如果您想确定它将使用您已安装的版本,则可以添加版本约束。