8

最初のgemを作成しましたが、正しくインストールできないようです。コマンドを発行できます

sudo gem install ceilingfish-toto

これは出力を生成します

Successfully installed ceilingfish-toto-0.3.6
1 gem installed

しかし、それから私がタイプするときgem which ceilingfish-toto。出力を取得します

Can't find ruby library file or shared library ceilingfish-toto

これは非常に奇妙なことです。gemsフォルダーにアクセスすると、そこにインストールされているすべてのファイルが表示されるからです。

# ls -l /opt/local/lib/ruby/gems/1.8/gems/ceilingfish-toto-0.3.6/
total 48
-rw-r--r--  1 root  admin  1053 14 Feb 17:16 LICENSE
-rw-r--r--  1 root  admin  6166 14 Feb 17:16 README.md
-rw-r--r--  1 root  admin   879 14 Feb 17:16 Rakefile
-rw-r--r--  1 root  admin     6 14 Feb 17:16 VERSION
-rw-r--r--  1 root  admin  2477 14 Feb 17:16 ceilingfish-toto.gemspec
drwxr-xr-x  7 root  admin   238 14 Feb 17:16 test

誰かがこれを引き起こす可能性があることを知っていますか?宝石の名前にハイフンが含まれているので文句を言っていると思います。ここでgemspecを見ることができますhttp://github.com/ceilingfish/toto

4

3 に答える 3

8

gem which ceilingfish-totogemrequirepathを調べてceilingfish-toto.rbという名前のファイルを探します。ないので何も返されません。うまくいくのはですがgem which totolib/gem仕様に含まれていないため、libファイルがインストールされていないため、存在しません。

再実行rake gemspecすると問題が解決する場合があります。

余談ですが、gemがその名前でインストールされているかどうかを確認するには、使用gem list ceilingfish-totoしているファイルに関係なく、gemがインストールされていることを示します(インストールされているバージョンも一覧表示されます)。

于 2010-02-15T23:10:08.237 に答える
8

ハイフンではありません。

gem whichgemではなくgemでライブラリファイルを検索します。比較:

$ gem which haml
/home/dave/.gem/ruby/1.8/gems/haml-3.0.12/lib/haml.rb
$ ls haml-3.0.12/lib/h*
haml  haml.rb  haml.rbc

ピーチー。の存在に注意してくださいlib/haml.rb

$ gem which rails
ERROR:  Can't find ruby library file or shared library rails
$ ls rails-2.3.8/lib/r*
rails_generator.rb  railties_path.rb  rubyprof_ext.rb  ruby_version_check.rb

ありませんlib/rails.rb。しかし、試してみてください:

$ gem which railties_path # not a gem
/home/dave/.gem/ruby/1.8/gems/rails-2.3.8/lib/railties_path.rb

したがって、ファイルがない(フォルダさえない)ため、インストールされているgem which ceilingfish-toto場合でもエラーがスローされます。ceilingfish-totolib/ceilingfish-toto.rblib

于 2010-06-18T07:34:50.880 に答える
0

宝石の命名に関する推奨事項によると:

別のgemに機能を追加する場合は、ダッシュを使用します。これは通常、requireステートメント(したがってgemのディレクトリ構造)の/と、メインクラスまたはモジュールの名前の::に対応します。

この場合、gemの名前がalpha-betaの場合は、gem whichコマンドにスラッシュ(/)を追加する必要があります。

gem which alpha/beta
于 2021-03-11T20:01:46.263 に答える