2012-10-08 50 views
0

我正在使用Ruby 1.8 lib kakasi-ruby,但它似乎只能針對Ruby 1.8進行編譯(https://github.com/hogelog/kakasi-ruby/issues/2)如何打電話/需要Ruby 1.9的Ruby 1.8 Lib 1.9

我的應用程序是Ruby 1.9.3,所以我需要從Ruby 1.9.3調用kakasi-ruby

我該怎麼辦?

我是否必須用Ruby 1.8打開一個子進程,並等待它完成以獲取進程返回值?

編輯: https://github.com/hogelog/kakasi-ruby

+0

使用你能提供一個鏈接到您正在使用的圖書館嗎?也許有一個與Ruby 1.9.3合作的替代方案。 – unnu

回答

2

找到3條可能路徑:

  • 似乎有是在回購一個branch for 1.9。也許嘗試編譯呢?
  • 否則,您的最快選項可能會返回到1.8,具體取決於它是什麼類型的應用程序。
  • 使用1.8調用可能會起作用,但由於庫似乎是一些C代碼的綁定,因此您可以直接調用該代碼。
+1

太棒了,分支1.9工作。順便說一句,我們需要非常小心編碼。我添加了自己的答案,以澄清如何使用1.9分支。 –

+0

順便說一句,你知道如何將它轉換爲定製的寶石?所以我可以把它們放在'RoR_Root/vendor/gems /'下面? –

+0

不知道什麼時候有本地代碼。我一直在使用寶石珠寶商來創建純粹的Ruby寶石,這非常簡單。它會給你幾個耙子任務,然後離開你。你需要的可能是一個gemspec文件,我懷疑你可能只是將帶有gemspec文件的代碼複製到你的RoR目錄。 (或者 - 你可以指向一個帶有gemspec的叉子 - 由於以下幾個原因可能會更好:其他人可能需要你的工作,並避免在當地鋪設寶石。) – froderik

0

BTW,這裏是用Ruby 1.9

[email protected]:~/Japanese$ irb 
1.9.3p194 :001 > require 'kakasi' 
=> true 
1.9.3p194 :002 > src="前原誠司経済財政相は4日、朝日新聞などのインタビューに対し" 
=> "前原誠司経済財政相は4日、朝日新聞などのインタビューに対し" 
1.9.3p194 :003 > src=src.encode("EUC-JP", "UTF-8") 
=> "\x{C1B0}\x{B8B6}\x{C0BF}\x{BBCA}\x{B7D0}\x{BAD1}\x{BAE2}\x{C0AF}\x{C1EA}\x{A4CF}\x{A3B4}\x{C6FC}\x{A1A2}\x{C4AB}\x{C6FC}\x{BFB7}\x{CAB9}\x{A4CA}\x{A4C9}\x{A4CE}\x{A5A4}\x{A5F3}\x{A5BF}\x{A5D3}\x{A5E5}\x{A1BC}\x{A4CB}\x{C2D0}\x{A4B7}" 
1.9.3p194 :004 > dst=Kakasi.kakasi("-w", src) 
=> "\xC1\xB0\xB8\xB6 \xC0\xBF\xBB\xCA \xB7\xD0\xBA\xD1 \xBA\xE2\xC0\xAF \xC1\xEA \xA4\xCF \xA3\xB4 \xC6\xFC \xA1\xA2 \xC4\xAB\xC6\xFC\xBF\xB7\xCA\xB9 \xA4\xCA\xA4\xC9\xA4\xCE \xA5\xA4\xA5\xF3\xA5\xBF\xA5\xD3\xA5\xE5\xA1\xBC \xA4\xCB \xC2\xD0\xA4\xB7" 
1.9.3p194 :005 > dst.force_encoding("EUC-JP") 
=> "\x{C1B0}\x{B8B6} \x{C0BF}\x{BBCA} \x{B7D0}\x{BAD1} \x{BAE2}\x{C0AF} \x{C1EA} \x{A4CF} \x{A3B4} \x{C6FC} \x{A1A2} \x{C4AB}\x{C6FC}\x{BFB7}\x{CAB9} \x{A4CA}\x{A4C9}\x{A4CE} \x{A5A4}\x{A5F3}\x{A5BF}\x{A5D3}\x{A5E5}\x{A1BC} \x{A4CB} \x{C2D0}\x{A4B7}" 
1.9.3p194 :006 > dst=dst.encode("UTF-8", "EUC-JP") 
=> "前原 誠司 経済 財政 相 は 4 日 、 朝日新聞 などの インタビュー に 対し" 
1.9.3p194 :007 >