首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >莺不包Java/JRuby宝石?

莺不包Java/JRuby宝石?
EN

Stack Overflow用户
提问于 2013-07-31 14:58:13
回答 1查看 1K关注 0票数 1

我有一个Rails应用程序,我想将它编译/打包为一个WAR文件,以便在Tomcat中托管。我已经添加了我能找到的所有相关内容,但是WAR似乎只包括非JRuby版本的宝石。因此,我在Tomcat中获得了诸如“无法找到activerecord适配器”之类的GemNotFound异常。如果我在7-zip中打开WAR文件,它将不会显示/WEB/ gems /gems下的任何JRuby或Java。

莺不报告任何错误或警告,战争似乎包含了它所需要的一切,除了这些宝石。

(因为这是一个轻量级的内部应用程序,我现在使用sqlite .这就解释了方形宝石。数据库存储在项目之外,并在database.yml文件中进行配置。)

我的Gemfile中的相关片段:

代码语言:javascript
复制
if defined?(JRUBY_VERSION)
  gem 'jdbc-sqlite3'
  gem 'activerecord-jdbc-adapter'
  gem 'activerecord-jdbcsqlite3-adapter'
  gem 'jruby-openssl'
  gem 'jruby-rack'
else
  gem 'sqlite3'
end

我还显式地尝试在warble.rb文件中包括/排除这些宝石:

代码语言:javascript
复制
config.gems -= ["sqlite3"]

config.gems += [
  "jdbc-sqlite3",
  "activerecord-jdbc-adapter",
  "activerecord-jdbcsqlite3-adapter",
  "jruby-openssl",
  "jruby-rack",
  "warbler"
]

有趣的是,如果我修改我的Gemfile以要求JRuby宝石,jruby -S bundle install可以正常工作,但是warble会给出一系列错误,说明gems只适用于JRuby。另一方面,如果我试图在JRuby (jruby -S warble)中运行它,就会得到:

战舰流产了! 没有这样的文件要加载-- jruby_pageant

我怎样才能让莺相信我想要JRuby宝石?

编辑:

我还尝试在but文件中指定平台,如在这篇博客文章中所描述的,但这会导致堆栈溢出。

代码语言:javascript
复制
platforms :jruby do
  gem 'jdbc-sqlite3'
  gem 'activerecord-jdbc-adapter', :require => false
  gem 'activerecord-jdbcsqlite3-adapter', :require => false
  gem 'jruby-openssl'
  gem 'jruby-rack'
end
platforms :ruby do
  gem 'sqlite3'
end

版本:

  • ruby 1.9.3
  • jruby 1.7.4
  • 莺1.3.8
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-31 16:42:31

原来我错过了jruby-pageant宝石。一旦我将它添加到包中,jruby -S warble就产生了预期的输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17973917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档