如果我打电话:
gem install sqlite3-ruby --v 1.2.3
Run Code Online (Sandbox Code Playgroud)
它适用于MRI
但如果我打电话:
jruby -S gem install sqlite3-ruby --v 1.2.3
Run Code Online (Sandbox Code Playgroud)
它说它正在尝试构建一个原生扩展(对于Windows)而且失败了.
为什么JRuby和MRI在处理宝石的方式上有所不同?
我在JRuby下使用ruby-mysql库并获得以下警告:
/mysql/protocol.rb:530 warning: GC.disable does nothing on JRuby
有没有办法让JRuby停止抱怨这个?
请比较和对比至少两个这些工具在Mac OS X,Windows和Linux上自动测试GUI应用程序的适用性.
被测试的应用程序可能会使用JRuby和Swing编写,以防这是您评估的一个因素.
布朗尼指出在你的答案中讨论所有三个工具:)
我已经在Ubuntu 11.04上将我的Rails 3.0.10/MRI应用程序移植到Ubuntu 11.04上的JRuby 1.6.4.我的目标是到达一个我必须执行以下操作才能在JRuby下运行应用程序的地方.
railsapp1> rbenv local jruby-1.6.4
railsapp1> rails server
Run Code Online (Sandbox Code Playgroud)
并让应用程序在MRI下工作,
railsapp1> rbenv local 1.9.2-p290
railsapp1> rails server
Run Code Online (Sandbox Code Playgroud)
这个问题的第一部分是解决宝石问题.为了使这个过程在没有代码更改的情况下工作,我在Rails Gemfile中执行了以下操作
platforms :mri do
gem 'mysql2', '~>0.2.11'
end
platforms :jruby do
gem 'jruby-openssl'
gem 'activerecord-jdbcmysql-adapter'
end
Run Code Online (Sandbox Code Playgroud)
这些gem语句是通过使用不同的MRI/JRuby和SQLite/MySQL组合创建虚拟轨道应用程序,然后从生成的Gemfiles中为每个组合获取gem语句而使用暴力方法获得的.
尽管如此,这并不是很好.我的config/database.yml文件如下所示:
development:
adapter: mysql2
database: doodad
username: doodad
password: doodad
host: localhost
Run Code Online (Sandbox Code Playgroud)
此config/database.yml文件仅适用于MRI版本.对于JRuby版本,config/database.yml文件如下所示:
development:
adapter: mysql
database: doodad
username: doodad
password: doodad
host: localhost
Run Code Online (Sandbox Code Playgroud)
即文件之间的唯一区别是数据库适配器的名称(mysql vs mysql2).有没有办法告诉database.yml文件或系统初始化程序根据Ruby环境是MRI还是JRuby选择适配器?
我正在尝试为后台工作者类写一个DSL,我有点卡住尝试完成某些事情.
理想情况下,我应该能够像以下一样写一个工作者......
job :job_name do |param1, param2|
puts param1
end
Run Code Online (Sandbox Code Playgroud)
现在,在我的工人超类课程中,我正在做这样的事......
class Worker
def self.job(job_name, &block)
define_method job_name do
# stuck
end
# do some additional stuff here
end
end
Run Code Online (Sandbox Code Playgroud)
我想要做的是定义一个方法,该方法可以访问原始作业调用中使用的块参数,因此我可以通过以下方式解除此作业:
Worker.new.job_name(param1, param2)
Run Code Online (Sandbox Code Playgroud)
创建的方法应该在功能上等同于:
def job_name(param1, param2)
puts param1
end
Run Code Online (Sandbox Code Playgroud)
这有任何意义吗?希望有人能指出我正确的方向.
我在我的模型中有验证方法
def validate
super
if some condition
errors.add('', 'some text')
end
end
Run Code Online (Sandbox Code Playgroud)
此方法调用Create和Update.我不想打电话给Update.我怎样才能做到这一点?
我正在使用rails2.3.11和jruby.
更新:我可以使用这个validate :custom_validation, :on => :create,但他们如何调用创建和更新?
我也检查了一下validate_on_create,但是当我打电话的时候我仍然没有想到validate?
我安装了jruby
rvm install jruby-1.7.0
Run Code Online (Sandbox Code Playgroud)
当它试图创建gemsets时内存不足所以我开始尝试使用新版本安装bundler这就是我得到的
~>gem install bundler
Error: Your application used more stack memory than the safety cap of 2048K.
Specify -J-Xss####k to increase it (#### = cap size in KB).
Specify -w for full StackOverflowError stack trace
Run Code Online (Sandbox Code Playgroud)
所以我向上移动了内存,我仍然没有任何大量的内存
~>JRUBY_OPTS=-J-Xss1024m gem install bundler
Error: Your application used more stack memory than the safety cap of 1024M.
Specify -J-Xss####k to increase it (#### = cap size in KB).
Specify -w for full StackOverflowError stack trace
Run Code Online (Sandbox Code Playgroud)
怎么可能这还不够我运行应用程序不到那个
我有一个包含许多JSON文件的文件夹.
我想获取.json文件名结尾的所有文件,_LAST.json并将它们组合成一个JSON文件.要处理的每个文件都命名为:
Bill_LAST.json
Jane_LAST.json
Kitty_LAST.json
Run Code Online (Sandbox Code Playgroud)
Bill_LAST.json 好像:
[{
"Date": "2012-11-19",
"Name": "Bill",
"Age": 54,
"Sex": "M"
}]
Run Code Online (Sandbox Code Playgroud) 今天我开始测试JRuby.我是一名Java开发人员,所以我乍看之下就喜欢这种混合物了.
然后编码一点我发现了差异,我想知道这是否正确.
我正在使用jruby 1.7.2和ruby 1.8.7进行测试.
在一个jruby控制台我输入:
c = []
c.class #=> Array
c << 9 << 8 << 0 << 2
c.to_s #=> "[9, 8, 0, 2]"
Run Code Online (Sandbox Code Playgroud)
现在在我输入的ruby控制台中输入:
c = []
c.class #Array
c << 9 << 8 << 0 << 2
c.to_s #=> "9802"
Run Code Online (Sandbox Code Playgroud)
这里可以发生什么,为什么结果在两种情况下都不一样?
我已经下载了jruby-bin-ion 1.7.8软件包并将其解压缩到C驱动器中。我已经设置了PATH和JRUBY_HOME环境变量。已安装Java,并为Java设置了路径和环境变量。Java程序运行良好。
当我jruby -version从命令提示符运行命令时,它给我以下错误:
Cannot locate Java installation, specified by JAVA_HOME:
C:\Program Files (x86)\Java\jdk1.7.0_25;
Run Code Online (Sandbox Code Playgroud) jruby ×10
ruby ×7
jrubyonrails ×2
dsl ×1
installation ×1
mysql ×1
rubygems ×1
testing ×1
warnings ×1
windows ×1