13. 本日ご紹介する活用パターン 初級編: Ruby On Java 中級編: Java Meets Ruby 上級編: It's A Java World
![JavaとRubyのすてきな関係](https://cdn-ak-scissors.b.st-hatena.com/image/square/4983a816f38d7366a2ffbd4877e0e6abe5b846fe/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Fjavaruby-120222193745-phpapp02-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
JRubyでTwitterのAPIにアクセスしてみましょう。RubyであればTwitter gemというライブラリがありますが、これがJRubyでも動くのは当たり前。そこで、Javaで使われるTwitter4Jというライブラリを使います。 OAuthの説明はここではしません。まずはアクセストークンを取得して、twitter.cfgというファイルに保存するコード。先にhttp://twitter.com/appsにアクセスして、コンシューマートークンを取得しておいてください。 JRubyからJavaのライブラリを使う場合、まずrequire 'java'しておいて、jarファイルをrequireします。またJavaのクラスを利用するには、'twitter4j.TwitterFactory'などの完全修飾名を使いますが、java_importメソッドを使うと、定数名としてインポートすることがで
#JavaScriptをRubyの中に Ruby上でJavaScriptを動作させます。 ##使用例:RSpecでUnderscore.jsをテストする。 var stooges = [{name : 'curly', age : 25}, {name : 'moe', age : 21}, {name : 'larry', age : 23}]; var youngest = _(stooges).chain() .sortBy(function(stooge){ return stooge.age; }) .map(function(stooge){ return stooge.name + ' is ' + stooge.age; }) .first() .value(); => "moe is 21" 上記の様にJavaScriptで書かれた使用例が、以下の様にRSpecでテスト出
なんか前にチャレンジした時は妙に苦労した気がするけど、難なくできてしまった。 一応、エントリーしときます。 なお、test.js はEclipseプロジェクト直下に配置。 import java.io.FileReader; import org.mozilla.javascript.Context; import org.mozilla.javascript.Function; import org.mozilla.javascript.Scriptable; public class Sample_Rhino2 { public static void main(String[] args) throws Exception { Context context = Context.enter(); try { FileReader reader = new FileReader("te
ついったーでspecsについても教えてもらったけど、JavaをRSpecできるならScalaも可能なのではないかということでRSpecでScalaのBDDにチャレンジしてみた。 環境の準備 JRuby入れる 公式から落としてきて/opt/jrubyに放り込む。 そして/opt/jruby/binにパスを通す。 ディレクトリ構造 CLASSPATHの設定に必要となるので整理。 scala_with_rspec/ build/ classes/ spec/ src/ build/classes以下にscalacでコンパイルされたclassファイルが出力される。 spec以下にはspecファイルを置き、srcにScalaのソースを置く。 以下ずっとscala_with_rspec直下での作業。 CLASSPATHの設定 1. scala-library.jarを含める /opt/local/sc
JRuby Nightly Builds The most recent successful snapshot gets released on Github nightly. Latest nightly builds JRuby Snapshot Builds We also publish snapshots of our development branches after every successful CI run. JRuby dist: The installable distribution of JRuby is in the jruby-bin files. Unpack it, run bin/jruby and you’re all set. Complete jar: The “complete” jar, containing all standad li
Sustainable Security Requirements with the ASVS Josh Grossman provides a brief overview of what the ASVS is, but takes a closer look at balancing trade-offs and prioritizing different security requirements. Josh shares how to make the process repeatable and how to implement it as part of your own organization's requirements process.
fooというrubyのメソッドに、FooというJavaクラスのインスタンスを渡す例です。 ----import java.util.ArrayList; import java.util.Map; import org.jruby.Ruby; import org.jruby.RubyClass; import org.jruby.RubyRuntimeAdapter; import org.jruby.internal.runtime.methods.DynamicMethod; import org.jruby.javasupport.JavaembedUtils; import org.jruby.runtime.ThreadContext; import org.jruby.runtime.builtin.IRubyObject; public class JRubyTest {
JRubyです。 しばらく、Javaからスクリプトを呼び出すところで試行錯誤しています。 いろいろ試していてまあこれでいいかなぁと思ったところで、困ったことが。 Javaから生成されたインスタンスを渡すのですが、JRuby側でどうしてもそのインスタンスのメソッドにアクセスできなかったのです。 NoMethodErrorとかでてしまいました。 前できたのにどうしてかなぁと悩んでいましたら、Java側のオブジェクトをJRuby側に変換する際に使用していたユーティリィがJavaUtil.convertJavaToRubyであることに気がつきました。 Java側の機能をそのまま引き継ぎたい場合は、JavaEmbedUtils.javaToRubyを使うのが正しいようです(多分)。 ちなみに,JavaEmbedUtils.javaToRubyの実装みてなるほどとわかるのですが、内部では、JavaEm
JRuby上でJavaのクラスを扱う話は良く載ってるんだけど、 Javaの中でRubyのコードを動かしたい。って話がなかなか載ってなかった。 で、色々躓いたのでメモ。 まず、Java中でRubyのコードを動かすには、 org.jruby.Ruby のインスタンスの evalScriptlet(String ruby_script) メソッドを呼ぶ。 import org.jruby.Ruby; import org.jruby.javasupport.JavaEmbedUtils; class Hoge { public static void main(String[] args){ Ruby ruby = JavaEmbedUtils.initialize(); try{ ruby.evalScriptlet("arr = %w(a b c)"); ruby.evalScriptlet
JRubyから利用するJavaで実装したクラスのオブジェクトのメソッドからブロックを利用したいと思い立つ。 そもそもJavaで実装したクラスはJRubyからinclude_class 'java.util.Random'とかすれば簡単に利用することができるのだけれども、そのメソッドはブロックを受け取ることができないし、JRubyで定義したクラスのオブジェクトを柔軟に利用することができない。 少しソースを調べたところ、IRubyObjectを実装すれば良さそうな気がしてきたので、とりあえずHello Worldを試してみた。 目標はHelloWorldというクラスをJavaで実装し、以下のように利用できるようにすること。 require 'helloworld' hw = HelloWorld.new('Yuanying') hw.helloworld() # -> 'Hello World
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く