2016-08-18 8 views
1

私はスクリプト内でXmlSimple gemを使用しようとしています。私のスクリプトは次のようになります。初期化されていない定数XmlSimpleですが、適切な宝石が含まれています

#!/usr/bin/env ruby 

gem 'xml-simple', '1.1.5' 

xml = XmlSimple.xml_in('test_data.xml') 

puts xml 

これはエラーで失敗します。

./script.rb:5:in `<main>': uninitialized constant XmlSimple (NameError) 

は、なぜ私はこのエラーを取得しています、と私はそれをどのように修正するのですか?


宝石と同様の問題にこれらの共通の解決策は、私を助けていない:

  • 1人の忘れが明示的に関連する宝石を含める場合、このエラーが出てきます。私のMVCEからわかるように、私はこの間違いをしていません。
  • 正しいバージョンのgemを明示的に要求すると、この問題が解決することがあります。しかし、私はすでにこの宝石の最新バージョンが必要です。また、私は自分のシステムにインストールした宝石のバージョンであることを再確認しました。
  • XmlSimple documentationによれば、XmlSimpleクラスは、この宝石が含まれている場合には、必ず定義されるべきです。私は存在しないクラスを使うつもりはない。
+0

宝石のソースを自分のスクリプトのディレクトリにコピーするために 'gem unpack'を使うと、スクリプトを動作させることができました。しかし、私はまだ宝石を含めると、典型的な方法ではうまくいかなかったのはなぜか分かりません。宝石のソースは間違いなく解決していますが、まだまだ奇妙な問題があります。 – Kevin

答えて

3

あなたはgem方法を使用することにより、に宝石を有効にしているが、あなたはそれを必要としていません。これは、gemのファイルがロードパス上にあることを意味しますが、Rubyインタプリタによって読み込まれていないため、その内容はあなたのプログラムで利用できません。

あなたは、単にgem行の後

require 'xmlsimple' 

を追加する必要があります。しかし、あなたが使用するバージョンを指定したい場合は、明示的gemを使用する必要がある -

は、あなたはいつもあなただけrequireを使用することができますし、宝石の最新インストールバージョンが自動的にアクティブになり、gem方法を必要としません。

+0

これはうまくいきました、ありがとう! – Kevin

関連する問題