荻野です. ruby-taglib を使ったことがないので,的外れな回答かもしれ ませんが,FreeBSD の ports にある ruby21-taglib は
http://www.hakubi.us/ruby-taglib/ にて配布されている tablib.rb をインストールしています. 一方, >> https://robinst.github.io/taglib-ruby/ にある Format-specific API >> のスクリプトのmp3ファイル名部分のみ変更してテストしてみたのですが、 https://robinst.github.io/taglib-ruby/ にて配布されている tablib.rb とは,中身が全く別物のよう ですが,どうでしょう. ruby-taglib の README には ---- require 'taglib' file = TagLib::File.new('test.mp3') puts "Old title: #{file.title}" file.title = "New title" file.save file.close ---- というサンプルが記載されています. TagLib::MPEG というモジュールは使っていませんし,そのような 定義はどこにも見当たりません. >> TagLib::MPEG::File.open("hoge.mp3") do |file| >> ./specific.rb:7:in `<main>': 0 is not a class/module (TypeError) これは TagLib::MPEG が未定義なので,TagLib::MPEG::File という クラスを探すことはできないです,というエラーかと思います. CentOS からの移行を考えるのであれば,ports にある ruby21-taglib ではなく,https://robinst.github.io/taglib-ruby/ こちらを gem を使ってインストールした方がよろしいのではないかと思います. On 2016/02/05 15:18, KAWAMATA Fumio wrote: > 川又です。 > > 内藤さん、えぐちさん、レスありがとうございました。 > > (なぜかMLからのメールが届かないので、自分のメールにつなげる > かたちでリプライします) > >> DL::Importable を DL::Importer に変えると直りませんか? > > ワーニングはそのままで、エラーメッセージが変わりました。 > (メッセージは、最初のメールのとおり) > > require 'dl' > require 'dl/import' > extend Dl::Importer > > のdl、Dlをfiddle、Fiddleに変更すると、このワーニングは表示 > されなくなるのですが、エラーメッセージは消えません。 > >> Centos のどのバージョンをお使いかは分かりませんが、 >> Centos 6 ならば ruby 1.8 が入っていますので、 >> この推測が正しければ Taglib は動作するだろうと思います。 >> FreeBSD で ruby 2.1 に切り替えたら、 >> ruby の互換性の問題で動かなくなったように思います。 >> >> 同じことは Centos 7 に上げても起こると思いますので、 >> Taglib を別のライブラリで置き換えるか、Taglib 自体を修正するかを >> したほうが良いのではないかと思います。 > > 情報を出し惜しみしていてすみません。現在スクリプトが動作して > いる環境は CentOS 6.4 + ruby 2.0.0p195です。 > CentOS 7.2を新規にセットアップしてスクリプトを実行してみた > ところ、正常に動作しました。(Rubyのバージョンは2.0.0p598。 > 普通にyum installしたので、CentOS 7.2標準のバージョンです。) > > 自分のスキルからするとTaglib自体の修正は敷居が高いですが、 > OSをCentOSからFreeBSDに切り替えたいので、さらに調べてみます。 > > ありがとうございました。 > > > On Thu, 04 Feb 2016 11:43:01 +0900 > KAWAMATA Fumio <fu...@next.matrix.jp> wrote: > >> こんにちは。川又と申します。 >> >> CentOSの環境上で動作している、taglibを用いたRubyスクリプトを >> Freebsd環境に移植しようとしていて、つまづいております。 >> >> Freebsdの環境は、Freebsd 10.2、ruby 2.1.8p440、ruby21-taglib-1.1_1、 >> taglib-1.10です。(ruby21-taglibとtaglibはportsからインストール) >> >> 自作スクリプト依存の切り分けのために、 >> https://robinst.github.io/taglib-ruby/ にある Format-specific API >> のスクリプトのmp3ファイル名部分のみ変更してテストしてみたのですが、 >> >> DL is deprecated, please use Fiddle >> /usr/local/lib/ruby/site_ruby/2.1/taglib.rb:40:in `<module:TagLib>': >> uninitialized constant DL::Importable (NameError) >> >> というワーニングとエラーが表示されます。 >> >> /usr/local/lib/ruby/site_ruby/2.1/taglib.rb >> の、 >> extend DL::Importable >> を >> extend DL::Importer >> に変更して実行すると、 >> >> DL is deprecated, please use Fiddle >> ./specific.rb:7:in `<main>': 0 is not a class/module (TypeError) >> >> となります。 >> >> エラー行は、 >> TagLib::MPEG::File.open("hoge.mp3") do |file| >> なのですが、このあと、どこを修正すれば良いのか分からない状況 >> です。 >> >> 対処法をご存知の方がいらっしゃいましたらご教示いただけない >> でしょうか? >> >> よろしくお願いします。 >> >> >> _______________________________________________ >> freebsd-users-jp@freebsd.org mailing list >> https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp >> To unsubscribe, send any mail to "freebsd-users-jp-unsubscr...@freebsd.org" > _______________________________________________ freebsd-users-jp@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp To unsubscribe, send any mail to "freebsd-users-jp-unsubscr...@freebsd.org"