2016-09-04 3 views
0

私は自分のサーバーにアップロードした2つのファイルの簡単なスクリプトを持っています。スクリプトはサーバー上で実行されていません。私の宝石を見つけることができません。

  1. Gemfile
  2. hello.rb

私が実行します。

bundle install 

それは宝石をインストールしました。

は、私が実行した場合:

ルビーhello.rb

私はエラーを取得する:

/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- HTTPClient (LoadError) 
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 

私が走った宝石はまだ、再び宝石ごとに同じエラーをインストールします。

gem listコマンドは、宝石も正しく表示します。

問題は何か?

私はすでにも、これを実行した:

sudo apt-get install ruby-dev 

更新 宝石のenv出力は次のとおりです。

RubyGems Environment: 
    - RUBYGEMS VERSION: 1.8.23 
    - RUBY VERSION: 1.9.3 (2013-11-22 patchlevel 484) [x86_64-linux] 
    - INSTALLATION DIRECTORY: /var/lib/gems/1.9.1 
    - RUBY EXECUTABLE: /usr/bin/ruby1.9.1 
    - EXECUTABLE DIRECTORY: /usr/local/bin 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86_64-linux 
    - GEM PATHS: 
    - /var/lib/gems/1.9.1 
    - /root/.gem/ruby/1.9.1 
    - /usr/share/rubygems-integration/1.9.1 
    - /usr/share/rubygems-integration/all 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :benchmark => false 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - REMOTE SOURCES: 
    - http://rubygems.org/ 
+3

Ruby 1.9.1は本当に古いです。あなたは本当にそれを使用しようとしていますか? 'which gem'の出力は何ですか?Rubyの' gem'のバージョンはどのようなものを使用していますか? –

+0

@DavidGrayson gemは/ usr/bin/gemと言っています。 – Blankman

+0

Gemfileにはどのような宝石がリストされていますか?特に、どのような宝石に 'HTTPClient.rb'というファイルがありますか?通常、Rubyのファイル名は小文字です。 –

答えて

1

require 'rubygems' 
require 'bundler/setup' 
Bundler.require :default 

を試し、その後

で実行します
bundler exec ruby hello.rb 

あなたの宝石がどこにあるか知りたい場合は、私は2.3.1をルビーように更新して、私はまた、次のように改名

gem env 
+0

これは一般的には正しいですが、 'bundler exec'を使用しているのはまっすぐ実行しても動作しない場合や' rake'のようなあなたが使っているツールが 'Gemfile'であなたのベースと違う場合に予約されています環境。 – tadman

1

を試してみてください。

は 'HTTPClientの'

が必要です〜

「httpclient」が必要です

なぜローカルでスクリプトが正常に動作したのか分かりませんが、サーバー上で 'HTTPClient'(大文字と小文字)を受け入れませんでした。

これで動作します。

+0

OS Xのような大文字と小文字を区別しないファイルシステムでOSを開発していますか?大文字と小文字を区別してLinuxにデプロイします。それができます。 – Doon

+0

@Doon yes osxはローカルに、ubuntuはサーバーとして。 – Blankman

+0

それはそれを説明します。 OS Xは大文字と小文字を区別しますが、デフォルトで大文字と小文字は区別されませUbuntuでは大文字と小文字が区別されるため、大文字と小文字は区別されます。 – Doon

関連する問題