前提・実現したいこと
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
あなたの回答
tips
プレビュー