我怎么编译使用JRuby应用程序莺是不是在网络上呢?这总是在我尝试时发生的事情:
$ warble
warble aborted!
No executable script found
Tasks: TOP => jar:files
(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)
我必须错误地使用它.有谁知道如何正确编译JRuby应用程序?
我使用Warbler从我的Ruby源创建一个Jar文件.我也安装了RVM.jar的行为取决于RVM使用的Ruby版本:如果我rvm use jruby然后jar工作正常,但如果我rvm use 2.2然后运行jar将这些警告消息打印到控制台:
Ignoring executable-hooks-1.3.2 because its extensions are not built. Try: gem pristine executable-hooks --version 1.3.2
Ignoring gem-wrappers-1.2.7 because its extensions are not built. Try: gem pristine gem-wrappers --version 1.2.7
Run Code Online (Sandbox Code Playgroud)
如果我rvm use ruby-1.9.3-p484然后运行jar实际上失败了:
Ignoring unf_ext-0.0.7.1 because its extensions are not built. Try: gem pristine unf_ext --version 0.0.7.1
Ignoring nokogiri-1.6.2.1 because its extensions are not built. Try: gem pristine nokogiri --version 1.6.2.1
Ignoring nokogiri-1.6.6.2 because its extensions are not built. Try: gem …Run Code Online (Sandbox Code Playgroud) I have a large rails app converted successfully to use JRuby and it runs locally without any issues bundle exec rails s -b 0.0.0.0.
I'm now trying to create a deployable WAR file using the following:
bundle exec warble executable war
This completes successfully without errors, but when running it with:
java -jar application.war
It boots up and then after a few seconds, it spits out this error:
2016-06-28 11:48:16.544:INFO::main: Logging initialized @228ms
2016-06-28 11:48:16.553:INFO:oejr.Runner:main: Runner
2016-06-28 11:48:16.698:INFO:oejs.Server:main: jetty-9.2.9.v20150224 …Run Code Online (Sandbox Code Playgroud) 我刚刚安装了jruby-1.4.0来玩它.我注意到,warbler默认将我的rails部署打包.我的生产使用JRuby的完整-1.3.1(我已经加入到我的lib目录冻结的版本),但莺是增加JRuby的核心 - 1.4当它打包一切.这对我来说有点令人担忧,因为我不想要任何版本问题或冲突,我只想冻结我的jruby版本,以便在我准备升级时必须明确地更改它.有谁知道实现这一目标的最佳方法?
我读过的文档说它将从WARBLER_HOME中取出所有罐子并打包它们,所以我认为jruby-core-1.4就在那里,但事实并非如此.如何从部署中省略这一点,或者具体说"只给我XX版本的jruby"
我通过跑步找到了莺回家:
jruby -S gem which warbler
Run Code Online (Sandbox Code Playgroud)
这使
/opt/local/share/java/jruby/lib/ruby/gems/1.8/gems/warbler-0.9.14/lib/
Run Code Online (Sandbox Code Playgroud)
但它只有一个机架罐,没有提到jruby-core-1.4
有什么想法吗?
我想我可能在Warbler中发现了一个错误,但我想在这里发布这个问题以防万一我做错了.简而言之,任何尝试将需要"bson"gem的jruby应用程序打包到带有warbler的.jar文件中的尝试都会失败.这是我每次都得到的错误:
LoadError: no such file to load -- jar:file:/Users/jstokes/Local/Repositories/wartest/wartest.jar!/gems/bson-1.8.0-java/lib/../ext/java/jar/mongo-2.6.5 ...
Run Code Online (Sandbox Code Playgroud)
这是在OS X或Linux上重现问题的一组非常简单的步骤:
制作一个'wartest'目录并插入其中
使用bundler,创建一个名为'wartest'的新jruby-1.6.7.2 gemset.那么'rvm使用jruby-1.6.7.2@wartest'
安装warbler和bundler:
jruby --1.9 -S gem install warbler
jruby --1.9 -S gem install bundler
Run Code Online (Sandbox Code Playgroud)
只是为了确认它的工作原理:
which warble
#=> /Users/jstokes/.rvm/gems/jruby-1.6.7.2@wartest/bin/warble
Run Code Online (Sandbox Code Playgroud)
现在创建以下两行Gemfile:
#Gemfile
source 'http://rubygems.org'
gem 'bson'
Run Code Online (Sandbox Code Playgroud)
现在'捆绑安装'
现在创建一个bin目录并创建文件bin/main.rb.然后粘贴以下内容:
#bin/main.rb
require 'bson'
puts 'It worked!'
Run Code Online (Sandbox Code Playgroud)
此时,我们已准备好创建jar文件.那样做
jruby --1.9 -S warble jar
#=> rm -f wartest.jar
#=> Creating wartest.jar
Run Code Online (Sandbox Code Playgroud)
现在是时候了:
java -jar wartest.jar
#=> It worked!
Run Code Online (Sandbox Code Playgroud)
所以有什么问题?问题是,如果你换到另一个gemset,或者使用系统ruby,它会爆炸.注意:
rvm use system
#=> Now using system ruby.
java -jar wartest.jar
Run Code Online (Sandbox Code Playgroud)
LoadError: …
我有一个ruby应用程序,我使用warbler编译成一个jar.我可以使用像这样的命令独立运行它java -jar executable.jar.但是我无法弄清楚如何在Java代码中使用这个jar.具体来说,我想在Java代码中创建Ruby类的对象,然后调用方法.
我正在尝试使用我的Rails项目创建一个war文件Warbler.
这是我的Gemfile:
source 'https://rubygems.org'
ruby '1.9.3', :engine => 'jruby', :engine_version => '1.7.4'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.0'
# Use mysql as the database for Active Record
#gem 'mysql2'
gem 'jdbc-mysql'
gem 'activerecord-jdbcmysql-adapter'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-rails', '~> 4.0.0'
# See https://github.com/sstephenson/execjs#readme for more supported …Run Code Online (Sandbox Code Playgroud) 我正在使用Warbler将Rails应用程序打包到WAR中.我已经将它部署到JBoss服务器,它似乎工作.
但是,我在Rails上遇到经典500错误,说"我们很抱歉,但出了点问题."
通常,我会查看logs/production.log以找出错误,但由于项目是WARed,我无法访问它.问题是,当Rails应用程序出现故障时,日志写在哪里?
背景:我想使用 warblers 可执行文件 war 部署一个小型 JRuby-On-Rails 应用程序,因此我可以删除 .war 文件,每个人都可以使用 .war 文件运行它java -jar app.war。
应用程序使用sqlite3存储一些数据,production-db-file位于war内的WEB-INF/db。
每次启动应用程序时,winstone 都会将 war 解压到一个临时目录,如果应用程序第二次启动,则在此会话期间执行的所有操作都将丢失(因为生产数据库再次从 war 文件中解压)。
那么如何在每次应用程序启动时使用相同的 db 文件呢?
当一个人测试系统时,不会发生这些错误.但是通过jmeter测试,我可以非常可靠地重现一些错误:
ActiveRecord::JDBCError: SAVEPOINT active_record_1 does not exist: ROLLBACK TO SAVEPOINT active_record_1
Stack:
gems/gems/activerecord-3.0.10/lib/active_record/connection_adapters/abstract_adapter.rb:207:in `log'
gems/gems/activerecord-3.0.10/lib/active_record/connection_adapters/abstract_adapter.rb:200:in `log'
gems/gems/activerecord-jdbc-adapter-1.2.1/lib/arjdbc/jdbc/adapter.rb:208:in `execute'
gems/gems/activerecord-jdbc-adapter-1.2.1/lib/arjdbc/mysql/adapter.rb:156:in `rollback_to_savepoint'
gems/gems/activerecord-3.0.10/lib/active_record/connection_adapters/abstract/database_statements.rb:179:in `transaction'
gems/gems/activerecord-3.0.10/lib/active_record/connection_adapters/abstract/database_statements.rb:171:in `transaction'
gems/gems/activerecord-3.0.10/lib/active_record/transactions.rb:207:in `transaction'
gems/gems/activerecord-3.0.10/lib/active_record/transactions.rb:290:in `with_transaction_returning_status'
gems/gems/activerecord-3.0.10/lib/active_record/transactions.rb:240:in `save'
gems/gems/activerecord-3.0.10/lib/active_record/transactions.rb:251:in `rollback_active_record_state!'
gems/gems/activerecord-3.0.10/lib/active_record/transactions.rb:239:in `save'
...(our code that simply calls save on a new instance of a model class)...
Run Code Online (Sandbox Code Playgroud)
我们不是嵌套事务,甚至没有明确地使用它们.我发现此错误消息存在一个现有错误,但它不相关; 我们没有截断或做任何DDL工作.仅仅创建一个记录并保存它.
我们使用Rails 3.0.10,JRuby 1.6.5,activerecord-jdbcmysql-adapter,使用Warbler 1.3.2进行了警告,并通过Elastic Beanstalk在64位Tomcat 7/Amazon RDS上使用单个Mysql实例v5.1.57进行部署.我们为config.threadsafe设置了! - 这感觉就像在ActiveRecord的内容中出现某种类型的种族 - 但ActiveRecord应该在线程安全中工作,不是吗?
最后一点:我担心这是一个JRuby或Warbler问题,因为如果我们从JRuby切换到MRI Ruby 1.9,我们就无法重现这个问题.
我创建了一个简单的'hello'类型的JRuby应用程序,并使用Warbler进行WAR,然后部署到JBoss.但是,使用该应用程序时出现以下错误:
ActiveRecord::JDBCError (The driver encountered an unknown error: java.sql.SQLException: path to '/opt/jboss/server/ruby/tmp/deploy/tmp8791905909469840942demo-exp.war/WEB-INF/db/production.sqlite3': '/opt/jboss/server/ruby/tmp/deploy/tmp8791905909469840942demo-exp.war/WEB-INF/db' does not exist):
当我深入研究demo.war文件时,WEB-INF目录中缺少db目录.db目录虽然存在于测试,开发和生产数据库文件中,但仍存在于app目录中.
有任何想法吗?
我正在尝试使用Ruby On Rails中的wicked-pdf创建一个pdf.它在开发模式下运行良好,但是当我在生产中部署时,我收到错误:
wkhtmltopdf is not executable
Run Code Online (Sandbox Code Playgroud)
我有位于以下位置的wkhtmltopdf可执行文件:
rails_root/bin/wkhtmltopdf-i386
Run Code Online (Sandbox Code Playgroud)
Warbler设置为在战争中包含bin文件夹:
config.includes = FileList["classes/*","bin/*"]
Run Code Online (Sandbox Code Playgroud)
我有邪恶的pdf配置为在正确的位置找到bin:
WickedPdf.config = {
:exe_path => Rails.root.join('bin', 'wkhtmltopdf-i386').to_s
}
Run Code Online (Sandbox Code Playgroud)
我运行warbler然后在jBoss应用服务器上部署战争.当我尝试生成PDF时,我收到有关它不可执行的错误.它在开发模式下运行良好 - 而不是在战争中.
二进制文件的权限应该没问题:
-rwxr-xr-x 1 username group 11446024 Apr 3 11:40 wkhtmltopdf-i386
Run Code Online (Sandbox Code Playgroud)
我尝试使用wkhtmltopdf-binary gem而不是手动包含wkhtmltopdf二进制文件.这在开发模式下也运行良好,但Wicked PDF无法在生产中找到二进制文件.
更新:在生产模式下,我将wicked-pdf配置更改为指向'wkhtmltopdf-binary'gem提供的二进制文件.这也是wkhtmltopdf is not executable错误.路径最终是:jboss-5.1.0.GA/server/default/tmp/3j001-3g0fg5-hf2xi49o-1-hf2xiuld-9q/myrailsapp.war/WEB-INF/gems/gems/wkhtmltopdf-binary-0.9.9.1/bin/wkhtmltopdf_linux_386
我在运行querxc()时出现文件错误(带"r") - (低于错误)的错误.我做过几次谷歌搜索,发现很少.你有没有在包装WarbleR中看到这个错误?有谁能够帮我 ?
cabanisi < - querxc(qword ="Synallaxis cabanisi",下载= FALSE)获取录制列表...文件错误(con,"r"):无法打开连接另外:警告消息:在文件中(con,"r "):InternetOpenUrl失败:'Umaresicitaçãoderedirecionamentotransformaráumaoconónãoseguraem segura'
warbler ×13
jruby ×11
java ×4
jar ×2
ruby ×2
bson ×1
compilation ×1
gem ×1
jrubyonrails ×1
logging ×1
r ×1
rvm ×1
sqlite ×1
wicked-pdf ×1
winstone ×1