"rake db:migrate"导致"The bundle currently has pg locked at 0.18.4"的结果。
"rake db:migrate"导致"The bundle currently has pg locked at 0.18.4"的结果。
我在Rails中生成了这个脚手架。然后我运行了"rake db:migrate"命令。然后出现了以下提示:
[31m您要求的是: pg >= 0 当前bundle锁定了pg版本为0.18.4。 尝试运行`bundle update pg`[0m [33m运行`bundle install`以安装缺失的gem包。[0m
然后我运行了"bundle update"和"bundle install",结果如下:
正在安装带有本地扩展的pg 0.18.4
C:/jruby-9.0.4.0/lib/ruby/stdlib/rubygems/ext/ext_conf_builder.rb:39: 警告: 对打开的文件调用Tempfile#unlink或delete方法;忽略此操作
Gem::Ext::BuildError: 构建原生扩展失败。 C:/jruby-9.0.4.0/bin/jruby.exe -r ./siteconf20151205-6108-1bkqm97.rb >extconf.rb NotImplementedError: 不支持C扩展at C:/jruby-9.0.4.0/lib/ruby/stdlib/mkmf.rb:1 require at org/jruby/RubyKernel.java:939 (root) at C:/jruby>9.0.4.0/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:1 at extconf.rb:2 extconf失败,退出代码为1 Gem文件将保留在C:/jruby- 9.0.4.0/lib/ruby/gems/shared/gems/pg-0.18.4供检查。 结果已记录在C:/jruby- 9.0.4.0/lib/ruby/gems/shared/extensions/universal-java-1.8/2.2.0/pg- 0.18.4/gem_make.out 安装pg (0.18.4)时发生错误,Bundler无法继续。 确保在打包之前成功运行`gem install pg -v '0.18.4'`命令。
在我的Gemfile文件中,我尝试将"gem 'pg'"设置为普通模式,然后运行"bundle install",但仍然收到错误消息。
这是我的Gemfile文件内容:
source 'https://rubygems.org' group :production do gem 'rails_12factor' gem 'pg' end group :development, :test do gem 'sqlite3' end gem 'sass-rails', '~> 4.0.3' gem 'uglifier', '>= 1.3.0' gem 'coffee-rails', '~> 4.0.0' gem 'jquery-rails' gem 'turbolinks' gem 'jbuilder', '~> 2.0' gem 'sdoc', '~> 0.4.0', group: :doc gem 'tzinfo-data', platforms: [:mingw, :mswin] gem 'coffee-script-source', '1.8.0'
问题出现的原因是在Windows机器上使用jRuby运行时,尝试运行"rake db:migrate"命令时出现了错误。错误提示是"bundle当前将pg锁定在0.18.4版本"。
解决方法是尝试使用以下两个gems之一替代pg:
- https://github.com/jruby/activerecord-jdbc-adapter
- https://github.com/headius/jruby-pg
如果以上方法不能解决问题,可以参考以下链接的回答进行尝试:
回答者表示感谢,确认问题出现在Windows机器上,并尝试使用activerecord-jdbc-adapter修复了pg的错误。但是在使用bundle install时,sqlite3也出现了类似的错误。他将继续尝试解决这个问题。