2016-06-26 5 views
-2

ruby​​gems.orgの宝石を"/gems"のようなプロジェクトのサブフォルダにセットアップしてからrequire経由でスクリプトから使用したいと考えています。私はそれを解決するのを助けてください。gemをローカルパスにインストールしてからそれを実行する方法

+0

なぜあなたは、特定のサブフォルダではなく、デフォルトの宝石のフォルダを使用しますか? – spickermann

+0

私は小さなスクリプトを持っていて、それを宝石で配布したいと思っています。 – Benjamin

+0

通常、このような依存関係を宝石の '.gemspec'に宣言します。あなたの場合、なぜこれはできないのですか? – spickermann

答えて

0

標準的なシナリオでは、gemをバイナリでビルドし、パックし、使用すると、すべての依存関係をgemspecに従ってダウンロードします。上記のような理由で受け入れられない場合は、次のオプションのいずれかを選択してください:

•スクリプトにはgemを作成します。

ます•path where to install dependenciesを指定:

bundle install --path=vendor/gems 

•代わりのrequire先マシン上の右のフォルダを指して、ローカルバンドルのconfigファイルは存在していませんので、あなたがあなたのスクリプトでrequire_relativeを使用します。

•スクリプトが完了したら、gemを含むすべてのものをパックします。

0

Rubyプロジェクトに行くための通常の方法では、セットアップにGemfileで、実際に方法がない場合、それらはしかし

を保存されている場所を考えてなくても、プロジェクトに必要な宝石を処理するためにbundler (see link for more info)を使用自身のgemディレクトリを出荷すること、例えばあなたの生産システムはインターネットに絶対にアクセスできないので、次のようにすることができます。

  • プロジェクトのルートにディレクトリを作成します(例: 'gems')。
  • ダウンロードし、そのディレクトリに宝石を展開(またはそのディレクトリへのインストールをリダイレクトするようにgem installの適切なオプションを使用)
  • 次の定数を使用して、プロジェクトのルートディレクトリにルビーのファイルを作成します。

    PROJECT_DIR = __dir__ 
    GEMS_DIR = File.join(PROJECT_DIR, 'gems') 
    
  • は今、あなたは、あなたが本当にバンドラを使用して考えなければならない、あなたの宝石はいえrequire File.join(GEMS_DIR, <gem_name>)

をリンクする必要がすることができます可能であれば可能な限り。

EDIT:

  • アングローバル宝石gem uninstall pg
  • インストールPG再びプロジェクトのgemsディレクトリからPGデータを削除gem install

    1. を経由して宝石をインストールしますが、プロジェクトのディレクトリにしますgem install -i <path_to_projects_gems_dir> pg
    2. 上記の宝石を指し示す必要がある場合にスクリプトをもう一度実行する
  • +0

    http://oi64.tinypic.com/29zok0x.jpg - 私は試してみますが、私にとってはうまくいきません。私は持っています /usr/lib/ruby/2.1.0/ruby​​gems/core_ext/kernel_require.rb:55: 'require 'の中:そのようなファイルをロードできません - /home/ben/RubymineProjects/database_dumper/gems/pg-0.18.4.gem(LoadError) – Benjamin

    +0

    私はgemを展開してパスを設定しようとしました... lib/pg.rb ..それは動作しません – Benjamin

    +0

    どのようにgemをディレクトリにインストールしましたか?あなたはそれを開梱しましたか? – Dervol

    0

    私はこのようにそれを解決:

    逸品-iインストールします。/ PG

    ROOT = File.expand_path('..', __FILE__) 
    ENV['GEM_PATH'] = File.join(ROOT, './') 
    
    require 'pg' 
    puts 'Version of libpg: ' + PG.library_version.to_s 
    
    関連する問題