荻野です.

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"

メールによる返信