标签: jruby

Jython还是JRuby?

这是一个高级概念性问题.我有两个单独的代码库,用于相同的目的,一个用Python构建,另一个用Ruby构建.我需要开发一些可以在JVM上运行的东西.所以我有两个选择:将Python代码转换为Jython或将Ruby转换为JRuby.由于我不知道他们中的任何一个,我想知道是否有人可以给我一些指导.喜欢哪一个运行得更快,或者更重要的是哪一个有可用于轻松进行代码迁移的工具(.pyc到.jar文件)?

ruby python jython jruby

4
推荐指数
1
解决办法
5329
查看次数

将方法存储在lambda中并发送到对象

如果函数作为lambda存储在变量中,是否可以调用函数(发送消息)对象?

说我有一个类似的数组 %w(a b c)

然后我可以链接方法,如:

%w(a b c).reverse.map(&:upcase) # => ["C", "B", "A"] 
Run Code Online (Sandbox Code Playgroud)

是否可以将链式方法调用提取到变量并将其应用于其他数组对象?

transform = -> { reverse.map(&:upcase) }
Run Code Online (Sandbox Code Playgroud)

我试过以下但没有运气:

使用JRuby 1.7.1

%w(a b c).send(transform)
TypeError: #<Proc:0x19a639d8@(irb):12 (lambda)> is not a string
Run Code Online (Sandbox Code Playgroud)

%w(a b c).send(&transform)
ArgumentError: wrong number of arguments (0 for 1)
Run Code Online (Sandbox Code Playgroud)

使用Ruby 1.9.3

%w(a b c).send(transform)
TypeError: #<Proc:0x007fa0721f0dc8@(irb):1 (lambda)> is not a symbol
Run Code Online (Sandbox Code Playgroud)

%w(a b c).send(&transform)
ArgumentError: no method name given
Run Code Online (Sandbox Code Playgroud)

ruby jruby ruby-1.9

4
推荐指数
1
解决办法
1097
查看次数

如何使用JRuby在Java中创建Ruby模块?

在Ruby中,我可以有一个类似的模块:

module Greeter
  def greet
    print "Hello"
  end
end
Run Code Online (Sandbox Code Playgroud)

我的班级可以得到这样的greet方法:

class MyClass
  include Greeter
end

obj = MyClass.new
obj.greet
Run Code Online (Sandbox Code Playgroud)

现在,我想Greeter用Java实现我的模块.我正在使用JRuby.我不确定如何用Java创建一个Ruby模块(这样我可以include正常工作).

我曾经做过Java接口.将它包含在我的Ruby类中并不会抛出错误,但它实际上并不是一回事,因为模块似乎实现了这些方法,而Java接口却没有.

ruby java module jruby

4
推荐指数
1
解决办法
723
查看次数

RVM报告未安装Gemfile ruby

在我的Gemfile中,我指定了:

ruby '1.9.3', engine: 'jruby', engine_version: '1.7.9'
Run Code Online (Sandbox Code Playgroud)

但进入我的Rails项目目录会rvm引发此错误:

RVM used your Gemfile for selecting Ruby, it is all fine - Heroku does that too,
you can ignore these warnings with 'rvm rvmrc warning ignore /home/petey/rails/kotoba/Gemfile'.
To ignore the warning for all files run 'rvm rvmrc warning ignore allGemfiles'.

ruby-1.9.3,engine:jruby,engine_version:1.7.9 is not installed.
To install do: 'rvm install ruby-1.9.3,engine:jruby,engine_version:1.7.9'
Run Code Online (Sandbox Code Playgroud)

但是,我确实安装了jruby 1.7.9:

$ rvm list

rvm rubies

   jruby-1.7.9 [ x86_64 ]
   ruby-1.9.3-p392 [ x86_64 ]
=* ruby-2.0.0-p247 [ x86_64 ] …
Run Code Online (Sandbox Code Playgroud)

ruby jruby rvm

4
推荐指数
1
解决办法
2514
查看次数

我需要手工构建Ruby DSL的哪些部分?

如果我想在Ruby 1.9或JRuby中构建DSL,我是否需要手动执行以下任何阶段:

  • 乐星
  • 解释
  • 解析
  • 及时编译

显然,作为一名程序员,我不喜欢尽可能多地编写实际代码,所以我希望这些步骤都不需要手工操作:)

ruby dsl domain-driven-design jruby

3
推荐指数
2
解决办法
309
查看次数

如何使用自定义方法扩展DataMapper :: Resource

我有以下代码:

module DataMapper
  module Resource

   @@page_size = 25

   attr_accessor :current_page  
   attr_accessor :next_page
   attr_accessor :prev_page

  def first_page?
    @prev_page
  end

  def last_page?
    @next_page      
 end

  def self.paginate(page)
    if(page && page.to_i > 0)
      @current_page = page.to_i - 1
    else
      @current_page = 0
    end

    entites = self.all(:offset => @current_page  * @@page_size, :limit => @@page_size + 1)

    if @current_page > 0
      @prev_page = @current_page
    end

    if entites.size == @@page_size + 1
      entites.pop
      @next_page = (@current_page || 1) + 2
    end

    entites
  end
end
Run Code Online (Sandbox Code Playgroud)

结束

然后我打电话给#paginate:

@photos …
Run Code Online (Sandbox Code Playgroud)

ruby jruby datamapper

3
推荐指数
1
解决办法
938
查看次数

jruby将jvm参数传递给rake任务

如何将像Xmx这样的jvm参数传递给jruby中的rake任务?我正在使用rvm并运行rake任务"rake db:migrate".

谢谢!

rake jvm jruby

3
推荐指数
1
解决办法
2313
查看次数

JRuby"没有这样的文件加载"

使用jruby-1.6.7通过rvm和gem版本1.8.24我创建了一个包含Gemfile的新项目:

source 'http://rubygems.org'
gem 'google-api-client'
Run Code Online (Sandbox Code Playgroud)

和一个main.rb:

require 'google/api_client'
Run Code Online (Sandbox Code Playgroud)

gem install bundler
bundle install
gem list
Run Code Online (Sandbox Code Playgroud)

我明白了

addressable (2.2.8)
autoparse (0.3.1)
bouncy-castle-java (1.5.0146.1)
bundler (1.1.4)
extlib (0.9.15)
faraday (0.8.1, 0.7.6)
ffi (1.0.11 java)
google-api-client (0.4.3)
jruby-launcher (1.0.14 java)
jruby-openssl (0.7.7)
json (1.7.3 java)
jwt (0.1.4)
launchy (2.1.0 java)
multi_json (1.3.6)
multipart-post (1.1.5)
rack (1.4.1)
rake (0.9.2.2)
rubygems-bundler (1.0.2)
rubygems-update (1.8.24, 1.7.2)
rvm (1.11.3.3)
signet (0.3.4)
spoon (0.0.1)
Run Code Online (Sandbox Code Playgroud)

但是当我运行ruby main.rb时,会导致错误:

LoadError: no such file to load -- google/api_client
  require at org/jruby/RubyKernel.java:1033 …
Run Code Online (Sandbox Code Playgroud)

ruby gem jruby bundler

3
推荐指数
1
解决办法
7910
查看次数

使用带有jruby的fxml

我已经看过如何用Java编写原始JavaFX代码,如何用Java编写FXML代码,如何在JRuby中编写原始JavaFX代码,但似乎无法找到使用FXML与JRuby的任何内容.目前可以在JRuby中使用FXML吗?如果是这样,有没有很好的教程?

更新:JRubyFX 0.9.1及更高版本支持FXML

ruby java jruby javafx-2 fxml

3
推荐指数
1
解决办法
646
查看次数

如何让postgresql与续集和jruby一起工作

require 'sequel'
require 'jdbc/postgres'
DB = Sequel.connect("jdbc:postgresql://user:pass@domain/database")
DB.tables
Run Code Online (Sandbox Code Playgroud)

返回:

....(bla bla bla stack trace bla bla bla)....
Sequel::DatabaseConnectionError: Java::OrgPostgresqlUtil::PSQLException: The connection attempt failed.
...........
Run Code Online (Sandbox Code Playgroud)

我也试过了

jdbc:postgresql://domain/database?user=name&pass=word 
Run Code Online (Sandbox Code Playgroud)

并且也有错误,但是另一个错误('密码请求但未提供')

红宝石1.9.3 - jruby 1.7.3

我看了看,试了很多代码样本,但是我无法让Sequel工作所以,在使用jruby时如何获得与postgres接口的续集?

postgresql jruby jdbc sequel

3
推荐指数
1
解决办法
2106
查看次数

标签 统计

jruby ×10

ruby ×8

java ×2

bundler ×1

datamapper ×1

domain-driven-design ×1

dsl ×1

fxml ×1

gem ×1

javafx-2 ×1

jdbc ×1

jvm ×1

jython ×1

module ×1

postgresql ×1

python ×1

rake ×1

ruby-1.9 ×1

rvm ×1

sequel ×1