在Location类的Java Debugger Interface文档中,有一个段落讨论了该位置的"层".我一直在寻找更多有关如何实现新层(例如,Scala或JRuby)的细节,但我没有找到太多.任何人都可以对这个话题有所了解吗?
什么米拉语言提供过的JRuby,Groovy和Scala呢?
我正在考虑使用JRuby(或适用于Android的Ruby的适当变体)在Android上创建应用程序.
根据我的研究,目前有两个项目支持Android上的Ruby开发:
从gotoub 上的Ruboto wiki的常见问题解答看来,Ruboto已准备好进行应用程序开发,但还不支持JIT编译,并且应用程序必须与库一起打包,这使得它占用大量空间(用于移动设备安装).
我对SL4A知之甚少,但似乎SL4A也试图在JVM上运行JRuby脚本.但主要的是SL4A仍处于alpha状态,所以我不知道它是否可以用于app开发.
对这些平台有更好了解的人可以建议应该使用哪一个?此外,在不久的将来,哪一个更有可能在JIT(性能),更低的占用空间和更好的API访问Android方面变得更加成熟?
我知道在运行时检测Ruby 实现(例如,MRI,JRuby,Rubinius等)的方法是检查全局常量RUBY_ENGINE:
$ ruby -e 'puts RUBY_ENGINE'
ruby
Run Code Online (Sandbox Code Playgroud)
什么是已知的Ruby实现的相当全面的列表及其对应的RUBY_ENGINE值?
我正在寻找运行一些未经验证的脚本(用一种尚未确定的语言编写,但需要基于Java,因此JRuby,Groovy,Jython,BeanShell等都是候选者).我希望这些脚本能够做一些事情并限制做其他事情.
通常,我只是使用Java的SecurityManager并完成它.这非常简单,让我限制文件和网络访问,关闭JVM的能力等等.这对我想要阻止的高级别东西很有效.
但是我想要允许一些东西,但只能通过我提供的自定义API /库.例如,我不想允许直接网络访问打开到yahoo.com的URLConnection,但如果使用MyURLConnection完成,我没关系.那就是 - 我想要允许的一组方法/类,然后我想要的其他一切不受限制.
我不相信这种类型的安全性可以使用标准的Java安全模型来完成,但也许它可以.我对脚本语言本身的性能或灵活性没有特定要求(脚本将通过基本循环/分支对我的API进行简单的过程调用).所以即使是一个"大"的开销来检查每次反射调用的安全检查也没问题.
建议?
我希望在Rails关闭时运行一些清理代码 - 这可能吗?我的情况是我在后台有一些线程(我正在使用jruby并调用java),这些线程一直存在于进程的生命中,我需要让他们知道关闭自己
谢谢!
有没有办法可以从JRuby显式地将一个Java对象转换为另一个Java类?
有时我希望能够调用SomeJavaClass#aMethod(MySuperClass)而不是SomeJavaClass#aMethod(MyClass)从JRuby 调用.
从Java开始,我会这样做:
someJavaObject.aMethod( (MySuperClass) myObj );
Run Code Online (Sandbox Code Playgroud)
但我没有看到一个#castruby方法或类似的东西来做JRuby中的等效方法.
请注意,从JRuby转换Java对象的问题缺乏对一般情况的答案,这就是我重新提出问题的原因.
很可能是一个愚蠢的问题,因为我对Java/Jython/JRuby /字节码不太了解,但..
今天我偶然发现了_why的邪恶 ......它允许你从Ruby代码输出Python字节码.基本上允许它们生成相同的字节码..
Jython输出Java字节码,就像JRuby一样.由于这些都编译为相同的字节码,这是否意味着您可以使用Ruby中的任何Python库和Python中的Ruby库?
前段时间我们将应用程序升级到Rails 4并切换到JRuby.
在此更改之前,迁移会将默认时间戳创建为NOT NULL.在更改之后,缺少NOT NULL.
我们创建这些时间戳(created_at,updated_at)如下:
class Model < ActiveRecord::Migration
def change
create_table :model do |t|
t.belongs_to :user, :null => false
t.text :content
t.timestamps
end
end
end
Run Code Online (Sandbox Code Playgroud)
我们的应用程序的重要部分是:
您是否知道可能导致问题的原因以及我们如何将默认生成更改回NOT NULL?
我有一个Sinatra"hello world"应用程序,我试图使用jRuby运行.它在我运行应用程序时有效,但在我运行机架时则无效.谁能告诉我这里发生了什么?
这是应用程序,在'app.rb'文件中:
require 'rubygems'
require 'bundler/setup'
require 'sinatra'
configure do
set :bind, '0.0.0.0'
end
get '/' do
'Boo!'
end
Run Code Online (Sandbox Code Playgroud)
我可以运行它bundle exec ruby app.rb,它工作正常:
jonea@centos7andy[~/andy/sinatra_sand_jruby]%: bundle exec ruby app.rb
[2015-01-12 10:36:06] INFO WEBrick 1.3.1
[2015-01-12 10:36:06] INFO ruby 1.9.3 (2014-12-09) [java]
== Sinatra/1.4.5 has taken the stage on 4567 for development with backup from WEBrick
[2015-01-12 10:36:06] INFO WEBrick::HTTPServer#start: pid=31654 port=4567
Run Code Online (Sandbox Code Playgroud)
这是我的config.ru来调用上面的程序:
require 'rubygems'
require 'bundler/setup'
require 'sinatra'
require './app'
run Sinatra::Application
Run Code Online (Sandbox Code Playgroud)
如果我运行它,它似乎工作,但我无法使用Web浏览器访问服务器:
jonea@centos7andy[~/andy/sinatra_sand_jruby]%: bundle exec rackup -p4567 …Run Code Online (Sandbox Code Playgroud)