在 Heroku 上需要 jruby pg 时没有要加载的文件
No such file to load when requiring jruby pg on Heroku
我想在 jRuby 应用程序中使用 jRuby pg gem。 gem 运行 在本地很好,但是当 运行 在 heroku 上时它无法加载 pg gem.
LoadError: no such file to load -- pg
require at org/jruby/RubyKernel.java:1071
require at /app/vendor/ruby-1.9.3-jruby-1.7.19/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54
(root) at text.rb:19
我的 Gemfile 是:
ruby '1.9.3', :engine => 'jruby', :engine_version => '1.7.19'
gem 'pg', '0.17.1', :platform => :jruby, :git => 'git://github.com/headius/jruby-pg.git', :branch => :master
Heroku bundle show
returns:
Gems included by the bundle:
* pg (0.17.1 c236a38)
Heroku ruby -v
returns:
jruby 1.7.19 (1.9.3p551) 2015-02-06 fffffff on OpenJDK 64-Bit Server VM 1.8.0_60-cedar14-b24 +jit [linux-amd64]
text.rb 包含:
require 'rubygems'
require 'pg'
puts "cool!"
到目前为止我有:
- 运行 在本地捆绑并重新推送
- 运行 本地捆绑安装并重新推送
- 已清除 Gemfile.lock 重新推送,然后 运行 在 heroku 上捆绑
- 更新了 heroku 工具带
- 已更新 ruby gems
- 检查我在本地和 heroku运行 上使用相同版本的 jruby
- 卸载 pg gem 并重新安装
- 在 text.rb 文件中需要 rubygems
- 需要 heroku 上 pg.rb 的绝对路径,这导致无法加载 pg_ext 错误
为了让它工作,你需要在你的 Procfile
命令前加上 bundle exec
(因为它是一个非标准的 gem Heroku 不能把它放在自动路径)。
例如:
test: bundle exec ruby text.rb
但是,这会给您的 JRuby 启动时间增加一些开销,因为 Bundler 必须启动两个 JRuby 进程(一个用于自身,然后另一个具有正确的 gem 上下文)。
另一种选择是使用更广泛采用的activerecord-jdbcpostgresql-adapter。
我想在 jRuby 应用程序中使用 jRuby pg gem。 gem 运行 在本地很好,但是当 运行 在 heroku 上时它无法加载 pg gem.
LoadError: no such file to load -- pg
require at org/jruby/RubyKernel.java:1071
require at /app/vendor/ruby-1.9.3-jruby-1.7.19/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54
(root) at text.rb:19
我的 Gemfile 是:
ruby '1.9.3', :engine => 'jruby', :engine_version => '1.7.19'
gem 'pg', '0.17.1', :platform => :jruby, :git => 'git://github.com/headius/jruby-pg.git', :branch => :master
Heroku bundle show
returns:
Gems included by the bundle:
* pg (0.17.1 c236a38)
Heroku ruby -v
returns:
jruby 1.7.19 (1.9.3p551) 2015-02-06 fffffff on OpenJDK 64-Bit Server VM 1.8.0_60-cedar14-b24 +jit [linux-amd64]
text.rb 包含:
require 'rubygems'
require 'pg'
puts "cool!"
到目前为止我有:
- 运行 在本地捆绑并重新推送
- 运行 本地捆绑安装并重新推送
- 已清除 Gemfile.lock 重新推送,然后 运行 在 heroku 上捆绑
- 更新了 heroku 工具带
- 已更新 ruby gems
- 检查我在本地和 heroku运行 上使用相同版本的 jruby
- 卸载 pg gem 并重新安装
- 在 text.rb 文件中需要 rubygems
- 需要 heroku 上 pg.rb 的绝对路径,这导致无法加载 pg_ext 错误
为了让它工作,你需要在你的 Procfile
命令前加上 bundle exec
(因为它是一个非标准的 gem Heroku 不能把它放在自动路径)。
例如:
test: bundle exec ruby text.rb
但是,这会给您的 JRuby 启动时间增加一些开销,因为 Bundler 必须启动两个 JRuby 进程(一个用于自身,然后另一个具有正确的 gem 上下文)。
另一种选择是使用更广泛采用的activerecord-jdbcpostgresql-adapter。