我在配置JRuby以正常使用OpenSSL时遇到问题.谷歌搜索显示这是一个相当普遍的事件,但我读过的解决方案都没有对我有用.这是我的设置:
这是错误:
irb(main):001:0> require 'jruby/openssl/gem_only'
=> true
irb(main):002:0> require 'openssl'
=> true
irb(main):003:0> OpenSSL::Digest::OPENSSL_VERSION_NUMBER
NameError: uninitialized constant OpenSSL::Digest::OPENSSL_VERSION_NUMBER
Run Code Online (Sandbox Code Playgroud)
有趣的是,require 'openssl'即使我没有安装jruby-openssl gem ,也会返回true.根据这个链接,那应该不会发生?
试图明确加载宝石require 'rubygems',gem 'jruby-openssl'但没有帮助.
对于Web应用程序,我使用Ruby on Rails.现在是时候看看我是否可以使用Ruby编写桌面应用程序.
所以我想知道我应该选择哪一个.
我看到它的方式是MacRuby + IronRuby vs JRuby.
前者让我可以同时使用Mac和Windows的桌面应用程序,而后者可以同时使用,但只能学习一种工具.
使用前者是否有强烈的论据而不是后者?
JRuby桌面应用程序是否与MacRuby + IronRuby桌面应用程序一样本机(或接近本机)?
每种解决方案的优缺点是什么?
我也非常新的桌面开发.分享您的想法和经验!
我有一个应用程序,我从Ruby迁移到JRuby(由于需要通过Java提供更好的Web服务安全性支持).我使用的一个宝石是用于创建后台作业的守护进程.
问题是它使用fork + exec来创建后台进程,但这对JRuby来说是禁忌.
那么 - 是否有用于创建后台作业的替代gem/wrapper?
我目前的想法是从shell脚本调用rake并让rake任务永远运行...
谢谢,克里斯.
更新我们目前正在使用几个与Java线程相关的包装器,即https://github.com/jmettraux/rufus-scheduler和https://github.com/philostler/acts_as_executor
我对红宝石一无所知.
你知道一些ruby的初学者视频教程吗?还有Ruby Enterprise开发的教程?
正如标题所说我想从我的jruby代码中改变java中的变量
更具体地说,我的Java代码中有一个整数没有值,而且我用我的JRuby代码给这个变量一个值,但我不知道怎么做.
这是我用JRuby代码得到的程度.
require 'java'
puts "Set player health here"
playerHealth = 3 # Setting player health here!
Run Code Online (Sandbox Code Playgroud)
但还没有在java中写任何东西.到目前为止,这几乎就是我所有的......
我希望能够向Heroku倾斜一个jruby rails 3.1 app.
Heroku现在支持Java:http://blog.heroku.com/archives/2011/08/25/java/ 据说,应该可以部署JRuby rails应用程序.这里有一个关于普通java的教程:http://devcenter.heroku.com/articles/java和另一个:http://devcenter.heroku.com/articles/spring-mvc-hibernate
这是关于Heroku的JRuby Sinatra应用程序的教程:http://chris.chowie.net/2011/08/28/Sinatra-with-JRuby-on-Heroku/ 为了使这个工作,我使用非运行heroku时的jruby ruby,因为如果rvm使用jruby,heroku会崩溃.
为了运行命令
mvn package
Run Code Online (Sandbox Code Playgroud)
我不得不这样做:
bundle --gemfile=/home/justin/github/sinatra-jruby-heroku/Jemfile install temple
bundle --gemfile=/home/justin/github/sinatra-jruby-heroku/Jemfile update
Run Code Online (Sandbox Code Playgroud)
我创建了应用程序:
heroku create jg1-sinatra --stack cedar
Run Code Online (Sandbox Code Playgroud)
我将文件推送到heroku,但是当应用程序启动时,它崩溃了.:(
有什么建议?我猜不会在Heroku有这方面的教程之前不久.
Heroku的日志文件:
2011-11-21T08:30:40+00:00 heroku[slugc]: Slug compilation started
2011-11-21T08:31:17+00:00 heroku[api]: Deploy 3bccec5 by justin.gordon@gmail.com
2011-11-21T08:31:17+00:00 heroku[api]: Release v7 created by justin.gordon@gmail.com
2011-11-21T08:31:18+00:00 heroku[web.1]: State changed from crashed to created
2011-11-21T08:31:18+00:00 heroku[slugc]: Slug compilation finished
2011-11-21T08:31:20+00:00 heroku[web.1]: Starting process with command …Run Code Online (Sandbox Code Playgroud) 我正在编写一条将多个路由的响应捆绑在一起的路由,因此我需要从Sinatra内触发其他路由。我在Sinatra自述文件中找到了以下代码来做到这一点:
status, headers, body = call env.merge("PATH_INFO" => '/bar')
Run Code Online (Sandbox Code Playgroud)
但是,它不发送查询字符串。所以我尝试了这个:
status, headers, body = call env.merge(
"PATH_INFO" => '/bar',
"QUERY_STRING" => 'param=1'
)
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用。如何调用另一个路由并传递查询字符串,使得字符串中的值最终位于被调用路由的params哈希中。
我们正在使用Sinatra 1.3.1和Rack 1.3.5。
本质上,我想创建一个程序来运行一些不受信任的代码来定义一些方法或类,然后对它运行一个不受信任的rspec规范.
我已经研究了一下沙盒Ruby,这个来自rubyconf的视频特别有用.在查看了几个解决方案之后,看起来最有用的两个解决方案是rubycop,它基本上对代码进行静态分析,以及jruby沙箱(均在上面的视频中介绍).我的直觉告诉我,犹豫不决的沙箱可能更安全,但我可能错了.
这是我想要做的完全不安全的例子:
code = <<-RUBY
class Person
def hey
"hey!"
end
end
RUBY
spec = <<-RUBY
describe Person do
let(:person) { Person.new }
it "says hey" do
person.hey.should == "hey!"
end
end
RUBY
# code and spec will be from user input (unsafe)
eval code
require 'rspec/autorun'
eval spec
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但代码显然需要沙箱.在一些天才提交之前system("rm -rf /*"),fork while fork或者同样危险的事情将是几分钟.
我用jruby沙箱做了各种尝试......
sand = Sandbox::Safe.new
sand.eval("require 'rspec/autorun'")
sand.activate! # lock it down
sand.eval code …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用JRuby Heroku buildpack(https://github.com/jruby/heroku-buildpack-jruby)来运行一个简单的测试应用程序.
但是,似乎无法编译带有C扩展名的gem.例如,在执行"git push heroku"时,没有C扩展的gem已成功安装,但随后......
Using activerecord (3.1.3)
Using activeresource (3.1.3)
Using bouncy-castle-java (1.5.0146.1)
Using bson (1.7.0)
Installing bson_ext (1.7.0) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/tmp/build_10vcxrs9ayvxf/jruby/bin/jruby extconf.rb
NotImplementedError: C extension support is not enabled. Pass -Xcext.enabled=true to JRuby or set JRUBY_OPTS or modify .jrubyrc to enable.
(root) at /tmp/build_10vcxrs9ayvxf/jruby/lib/ruby/shared/mkmf.rb:8
require at org/jruby/RubyKernel.java:1019
(root) at /tmp/build_10vcxrs9ayvxf/jruby/lib/ruby/shared/rubygems/custom_require.rb:1
(root) at extconf.rb:1
Gem files will remain installed in /tmp/build_10vcxrs9ayvxf/vendor/bundle/jruby/1.9/gems/bson_ext-1.7.0 for inspection.
Results logged to /tmp/build_10vcxrs9ayvxf/vendor/bundle/jruby/1.9/gems/bson_ext-1.7.0/ext/cbson/gem_make.out
An error …Run Code Online (Sandbox Code Playgroud) 无法使用jruby启动rails5,收到以下错误.
gavinyap@gavin-ubuntu ? ~/Development/rails5app ? rails s
DEPRECATION WARNING: alias_method_chain is deprecated. Please, use Module#prepend instead. From module, you can access the original method using super. (called from require at bin/rails:4)
Bundler::GemRequireError: There was an error while trying to load the gem 'activerecord-jdbcmysql-adapter'.
Gem Load Error is: uninitialized constant ActiveRecord::ConnectionAdapters::Column::Format
Backtrace for gem load error is:
/home/gavinyap/.rvm/gems/jruby-9.1.2.0/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc/type_cast.rb:13:in `<module:TypeCast>'
/home/gavinyap/.rvm/gems/jruby-9.1.2.0/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc/type_cast.rb:7:in `<module:Jdbc>'
/home/gavinyap/.rvm/gems/jruby-9.1.2.0/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc/type_cast.rb:4:in `< module:ConnectionAdapters>'
/home/gavinyap/.rvm/gems/jruby-9.1.2.0/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc/type_cast.rb:3:in `<top>'
/home/gavinyap/.rvm/gems/jruby-9.1.2.0/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc/column.rb:1:in `singleton cla
Run Code Online (Sandbox Code Playgroud)
Jruby和Rails的版本