标签: jruby

JRuby OpenSSL错误

我在配置JRuby以正常使用OpenSSL时遇到问题.谷歌搜索显示这是一个相当普遍的事件,但我读过的解决方案都没有对我有用.这是我的设置:

  • Ubuntu 9.10
  • jruby 1.5.1
  • jruby-openssl(0.7)

这是错误:

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'但没有帮助.

openssl rubygems jruby

5
推荐指数
1
解决办法
2554
查看次数

MacRuby + IronRuby或JRuby用于桌面应用程序?

对于Web应用程序,我使用Ruby on Rails.现在是时候看看我是否可以使用Ruby编写桌面应用程序.

所以我想知道我应该选择哪一个.

我看到它的方式是MacRuby + IronRuby vs JRuby.

前者让我可以同时使用Mac和Windows的桌面应用程序,而后者可以同时使用,但只能学习一种工具.

  • 使用前者是否有强烈的论据而不是后者?

  • JRuby桌面应用程序是否与MacRuby + IronRuby桌面应用程序一样本机(或接近本机)?

  • 每种解决方案的优缺点是什么?

我也非常新的桌面开发.分享您的想法和经验!

ruby ironruby jruby objective-c macruby

5
推荐指数
1
解决办法
1193
查看次数

Ruby守护进程和JRuby - 替代选项

我有一个应用程序,我从Ruby迁移到JRuby(由于需要通过Java提供更好的Web服务安全性支持).我使用的一个宝石是用于创建后台作业的守护进程.

问题是它使用fork + exec来创建后台进程,但这对JRuby来说是禁忌.

那么 - 是否有用于创建后台作业的替代gem/wrapper?

我目前的想法是从shell脚本调用rake并让rake任务永远运行...

谢谢,克里斯.

更新我们目前正在使用几个与Java线程相关的包装器,即https://github.com/jmettraux/rufus-schedulerhttps://github.com/philostler/acts_as_executor

ruby fork jruby

5
推荐指数
1
解决办法
4283
查看次数

Ruby视频教程

我对红宝石一无所知.

你知道一些r​​uby的初学者视频教程吗?还有Ruby Enterprise开发的教程?

ruby video jruby

5
推荐指数
1
解决办法
8911
查看次数

从JRuby代码更改java变量?

正如标题所说我想从我的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中写任何东西.到目前为止,这几乎就是我所有的......

java variables jruby

5
推荐指数
1
解决办法
643
查看次数

如何在Heroku上部署JRuby Rails 3.1.x.

我希望能够向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)

jruby heroku jrubyonrails

5
推荐指数
1
解决办法
1691
查看次数

使用Sinatra内部的查询字符串触发另一条路线

我正在编写一条将多个路由的响应捆绑在一起的路由,因此我需要从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。

ruby jruby sinatra

5
推荐指数
1
解决办法
1633
查看次数

如何创建沙盒RSpec环境?

本质上,我想创建一个程序来运行一些不受信任的代码来定义一些方法或类,然后对它运行一个不受信任的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)

ruby rspec jruby sandbox

5
推荐指数
1
解决办法
664
查看次数

在Heroku上使用jRuby cext构建宝石

我正在尝试使用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 heroku buildpack

5
推荐指数
1
解决办法
727
查看次数

Rails5 jruby无法启动

无法使用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的版本

  • jruby 9.1.2.0(2.3.0)2016-05-26 7357c8f
  • OpenJDK 64位服务器
  • VM 25.91-b14 on 1.8.0_91-8u91-b14-0ubuntu4~16.04.1-b14 + jit …

jruby ruby-on-rails-5

5
推荐指数
1
解决办法
1674
查看次数