我希望在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
返回:
Gems included by the bundle:
* pg (0.17.1 c236a38)
Heroku ruby -v
返回:
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!"
到目前为止,我有:
答案 0 :(得分:2)
为了实现这一点,您需要在Procfile
命令前添加bundle exec
作为前缀(因为它是非标准宝石,Heroku无法将其置于其中在路径上自动)。
例如:
test: bundle exec ruby text.rb
但是,这会给你的JRuby启动时间增加一些开销,因为Bundler必须启动两个JRuby进程(一个用于自身,然后另一个用正确的gem上下文)。
另一个选择是使用更广泛采用的activerecord-jdbcpostgresql-adapter。