質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.82%

RubyファイルをJavaで動かしたい。

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 467

前提・実現したいこと

RubyプログラムをJava(Eclipse)で動かしたい。(JRuby)

発生している問題・エラーメッセージ

JavaからRubyスクリプトを実行する(JRuby)「https://yone-public.blogspot.com/2016/06/javarubyjruby.html」を参考にEclipseを動かしてみているのですが、ここではrubyファイルがputs"Hello world"などgemfileなど必要がなく簡潔なものでどのように動かすのか他のサイトを探してみましたが、どれもRubyでJavaプログラムを動かすといったものが多くありませんでした・・。プログラミング初心者でサイトに頼りきりで申し訳ないのですが、以下のRubyプログラムをJavaで動かす方法をご伝授願いたいです。

該当のソースコード

Ruby
ソースコード

require 'bundler/setup' 
require 'nokogiri'
require 'csv'
require 'open-uri'
def setup_doc(url)
charset = 'nil' 
html = open(url) { |f| f.read }
doc = Nokogiri::HTML.parse(html, nil, charset)
doc.search('br').each { |n| n.replace(" ") } #replace br with  space
doc
end

def scrape(url)
doc = setup_doc(url)

csv = CSV.open("sample.csv",'w',{:col_sep =>",", :quote_char => ' \' ',:force_quotes => true})
doc.xpath('//table/tbody/tr').each do |row| 
tarray = [] # make array
theader = []
ttest = []
doc.search('div').each { |n| n.replace("") } #delete <div> tag

doc.search('/div').each { |n| n.replace("") } #delete </div> tag

row.xpath('td').each do |cell|
(tarrayとtheaderを取得・ttestに結合して渡し、csvに出力する処理)

end

csv.close    # close csv file

end
url="https・・"
scrape(url)
gemfile

gem "csv"
gem "nokogiri"
source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

Java(サイトから拝借しました)
Java側
// Scriptエンジンを生成
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("jruby");
// RubyスクリプトのFileReaderを準備
FileReader f = new FileReader("test.rb");
// Rubyスクリプトを評価
engine.eval(f);
// 関数呼び出し
obj = ((Invocable)engine).invokeFunction("test");

Ruby側
def test
puts "Hello World"
end

試したこと

rubyだけで実行は無事できていまして、tableの表をcsv出力するというものです。これをrubyではなくjavaで動かしてほしいと言われ、サイトをいくつか探したのですがめぼしいサイトが(私の力ではかもしれませんが・・)見つかりませんでした。
また、eclipseは上記サイトではmarsを使っていますが、使い慣れたeclipse preiadesを使っています。こちらも駄目でしたらご指導ご鞭撻のほどよろしくお願いします。(初投稿になりまして不足情報などありましたら申し訳ございません)。

補足情報(FW/ツールのバージョンなど)

ruby 2.6.3p62 (2019-04-16 revision 67580) [x64-mingw32]
Windows 64bit版 pleiades 4.6.3
jruby-complete 9.2.7.0.jar

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • otn

    2019/07/08 01:31

    > これをrubyではなくjavaで動かしてほしい
    と言われたら、普通は「RubyからJavaに書き直して」という意味じゃないでしょうか。

    キャンセル

  • programingbegin

    2019/07/08 01:59 編集

    こんばんは、返信ありがとうございます。やはりそうですよね・・。ここまでするのに時間がかかったものですから数時間後までにやってほしいと言われて、変更できるものなのかな?と思ってしまい質問してしまいました。javaで書き直してみたいと思います、ご意見ありがとうございました。

    キャンセル

  • m.ts10806

    2019/07/08 05:46 編集

    質問の件とは直接関係ないですし細かいですが
    >eclipseは上記サイトではmarsを使っていますが、使い慣れたeclipse preiades

    Pleiades はEclipseの開発パッケージ(日本語化など)の総称であって、MarsはEclipse本体のバージョンの通称なので並列には出来ません(つまりMarsだけの表記だと本体だけかPleiadesパッケージ版かは分からない)。Pleiades だけではどのバージョンか分からないので表記は正確にされたほうが良いですね。
    Marsは4.5なので4.6.3だと通称Neonですね。

    キャンセル

  • asahina1979

    2019/07/08 09:09

    jrubyが動作保証しているバージョンの組み合わせですか?
    java,ruby,jruby

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.82%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る