我正在努力使用 jrubyfx 加载 Javafx 和 Jruby 的图标(png 格式),我没有找到任何示例或文档,所以我尝试了:
1)
button_login = find('#button_login') # See ComplexControl.fxml
button_login.text = "#{t.login.form.button_login}"
button_login.graphic image("src/code/media/logo.png")
Run Code Online (Sandbox Code Playgroud)
我得到:未能将 javafx.scene.image.Image 强制转换为 javafx.scene.Node>
2)
button_login = find('#button_login') # See ComplexControl.fxml
button_login.text = "#{t.login.form.button_login}"
button_login.graphic = "src/code/media/logo.png"
Run Code Online (Sandbox Code Playgroud)
我得到: TypeError: 无法将类 org.jruby.RubyString 的实例转换为类 javafx.scene.Node>
所以我对正确的语法感到困惑:(
感谢您的帮助 :)
jruby 9.1.15.0 (2.3.3) 2017-12-07 929fde8 Java HotSpot(TM) 64 位服务器 VM 25.161-b12 位于 1.8.0_161-b12 +jit [linux-x86_64] - Ubuntu Xenial
我正在考虑在App Engine上使用JRuby,但是听说App Engine上的Juby应用程序与Python应用程序相比具有较长的启动延迟.为什么是这样?
是因为JRuby jar文件太大了,冷启动要求在应用程序开始服务之前将它们加载到内存中?这是我的猜测,但我不确定这是否是一个精确的技术解释.如果是这样,为什么Python会有所不同?
[这是关于最新技术的经验问题:我不是在问Java是否比在JVM中运行的动态语言更酷或更酷.
除了性能是主要决策因素的情况之外,公司/开发人员是否仍然愿意选择Java而不是Groovy,JRuby或Jython?
编辑:如果答案是"是",为什么?
个人注意:我要问的原因是,虽然我在Ruby中做了一些我的专业工作(现在不是JRuby),但在我的个人项目中,我使用的是Java.虽然我在Groovy中编写了非平凡的应用程序,但我更喜欢Java,但我想知道我是否应该克服它并在Groovy中做所有事情.我喜欢Java,因为我觉得静态打字可以节省我的时间并帮助重构.(不,我不熟悉Scala.)但是,我觉得这个非常经验的,关于主题的编程问题可能会为我的决定提供信息.
问题:从哪里p获取它的价值,为什么会发生?
考虑这个irb会话:
me@somewhere:~$ irb
irb(main):001:0> a
NameError: undefined local variable or method `a' for main:Object
from (irb):1
irb(main):002:0> foo
NameError: undefined local variable or method `foo' for main:Object
from (irb):2
irb(main):003:0> p
=> nil
irb(main):004:0> p.class
=> NilClass
irb(main):005:0>
Run Code Online (Sandbox Code Playgroud)
我从未定义过p- 为什么它没有价值?既a没有foo被认出也没有被认出那么特别的是p什么?我也没有找到任何列出的内容Kernel#p
上下文:我正在阅读所谓的"28字节的红宝石快乐"并假设p是一个变量,如:def p.method_missing *_......
(别担心:我不打算在nil上实际定义method_missing ...只研究一些ruby代码......)
有没有一种简单的方法将字符串的第一个字母转换为小写?String#capitalize修改整个字符串.当然,我可以删除第一个字母,将其缩写,然后将其添加到开头.但它似乎有点傻,有更简单的方法吗?
注意:我将只处理英文单词.
编辑:str[0] = str[0].downcase在JRuby 1.6中不起作用:(
编辑2:最后我决定这个:
word = "ABC"
first_capital_letter = word.match(/^([A-Z])/).to_s
if(first_capital_letter)
word = word.sub(first_capital_letter, first_capital_letter.downcase)
puts word
end
Run Code Online (Sandbox Code Playgroud) 如何根据当前使用的Ruby VM有条件地选择使用哪个gem?
理想情况下,我想要像:
if [using jruby]
gem 'jruby-openssl'
Run Code Online (Sandbox Code Playgroud)
如果使用的RVM是JRuby,这只需要jruby-openssl.
我正在编写一个Ruby脚本来生成Unix shell脚本,但是我无法让JRuby在Windows上编写Unix换行符.
我写了一个test.rb包含以下内容的文件:
File.open("test.sh", 'w') do |f|
f.write("#!/bin/sh\n")
f.write("echo hello\n")
end
Run Code Online (Sandbox Code Playgroud)
当我使用命令执行它时,java -jar jruby-complete-1.6.5.jar test.rb生成的文件包含\r\n换行符而不是\n换行符.
如何强制JRuby用Unix换行编写文本文件?
我尝试按照本教程在tomcat上部署我的jruby应用程序,但它始终以:
--- Backtrace
NoMethodError: undefined method `relative_url_root=' for ActionController::Base:Class
send at org/jruby/RubyKernel.java:2097
Run Code Online (Sandbox Code Playgroud)
尝试使用tomcat 6和7.
我的jruby版本是1.6.5,我使用Rails 3.1(太新鲜了?)
谢谢你的帮助
我正在寻找一个HBase shell命令,它将计算指定列族中的记录数.我知道我可以跑:
echo "scan 'table_name'" | hbase shell | grep column_family_name | wc -l
Run Code Online (Sandbox Code Playgroud)
但是这将比标准计数命令运行得慢得多:
count 'table_name' , CACHE => 50000 (because the use of the CACHE=>50000)
Run Code Online (Sandbox Code Playgroud)
更糟糕的是 - 它没有返回实际的记录数,而是返回指定列族中的单元格总数(如果我没有弄错?).我需要这样的东西:
count 'table_name' , CACHE => 50000 , {COLUMNS => 'column_family_name'}
Run Code Online (Sandbox Code Playgroud)
迈克尔,提前谢谢