"rake db:migrate"导致"The bundle currently has pg locked at 0.18.4"的结果。

7 浏览
0 Comments

"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'  

0
0 Comments

问题出现的原因是在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

如果以上方法不能解决问题,可以参考以下链接的回答进行尝试:

- unable to install pg gem

回答者表示感谢,确认问题出现在Windows机器上,并尝试使用activerecord-jdbc-adapter修复了pg的错误。但是在使用bundle install时,sqlite3也出现了类似的错误。他将继续尝试解决这个问题。

0