私はルビーの宝石になると期待しています。誰でも簡単なライブラリやプラグインを宝石に変換するチュートリアルへのリンクがありますか?また、特に、Rubyが宝石を見つけるために必要なプロセスは何ですか?それは、宝石のパスにファイルを置くこと(または私の構成が台無しになっている?)よりも何かのようです。"require"のインクルードパスにルビーの宝石をどうやって入れますか
おかげ
私はルビーの宝石になると期待しています。誰でも簡単なライブラリやプラグインを宝石に変換するチュートリアルへのリンクがありますか?また、特に、Rubyが宝石を見つけるために必要なプロセスは何ですか?それは、宝石のパスにファイルを置くこと(または私の構成が台無しになっている?)よりも何かのようです。"require"のインクルードパスにルビーの宝石をどうやって入れますか
おかげ
これは手動で行うのは難しいことではありません。たとえば、宝飾品として配布するライブラリwhatever.rb
があるとします。
lib
を作成し、lib/whatever.rb
にwhatever.rb
のコピーを置きます。whatever.gemspec
を作成し、そこに次のように入れて、適切な値を記入:今
Gem::Specification.new do |spec|
spec.name = 'the-name-of-your-gem'
spec.version ='0.0.1'
# this is important - it specifies which files to include in the gem.
spec.files = ["lib/whatever.rb"]
# optional, but useful to your users
spec.summary = "A more longwinded description of your gem"
spec.author = 'Your Name'
spec.email = '[email protected]'
spec.homepage = ' http://www.yourpage.com '
# you did document with RDoc, right?
spec.has_rdoc = true
# if you have a ruby forge project
spec.rubyforge_project = 'your-project-name-on-rubyforge'
# if you have any dependencies on other gems, list them thusly
spec.add_dependency('hpricot')
spec.add_dependency('log4r', '>= 1.0.5')
end
gem build
コマンドを使用して、宝石を構築するために:% gem build whatever.gemspec Successfully built RubyGem Name: the-name-of-your-gem Version: 0.0.1 File: the-name-of-your-gem-0.0.1.gem %
gem install the-name-of-your-gem-0.0.1.gem
を使用してローカルでテストすることができます、その後、スクリプトで、あなたのライブラリーを使用して、単純に先頭に次の操作を行いますgemspec
ファイルにどのようなさまざまな設定の詳細について、GemSpec Referenceを確認してください。
個人的には、私も実行可能なスクリプトをパッケージ化するために多くの場合、rubygemsを使用しています。それは非常に便利です。
newgemを使用しています博士ニック、からoldish one hereがあります。それはおそらく今少し古いです。
もう少し最近、我々は上記に基づいて構築されているように見える宝石を得る。のHere's a post about that
限り、あなたがgem install <some-useful-stuff>
を実行してきましたし、あなたが必要なコードがrequire 'rubygems'
を実行したいずれか、またはあなたがRUBYOPT = -rubygems設定したらパスが、行くように(Windowsのみ?私はよく分からないということです)その後、後続の実行require
は適切なライブラリのgemsディレクトリも検索します。
さらに明示的(ただし非推奨)のrequire_gem
コマンドもあります。バージョン番号を指定できる普通のgem
です。
誰かがこの素晴らしい答え、コメントなしで詳細な答えをマークしましたか? –
すばらしく完了しました。素晴らしい答え。 – KeatsKelleher
驚くべきことに、この回答は、デフォルトでバンドル業者が宝石を作成した後、バージョンコントロールに追加されたファイルだけが「spec.files」に追加されることを認識しました。つまり、 's.files = \' git ls-files \ '.split($ \)'はgitに追加していないファイルを無視します。 – erran