1

私は、rvmを介してruby1.9.3を使用してMacで開発しているrubyプロジェクトを持っています。今日は、リポジトリへの変更をチェックインするときに、テストを実行するためのビルドサーバーをセットアップすることに1日のほとんどを費やしました。私のサーバーはUbuntuを実行しています。rvmをインストールし、1.9.3も使用しました。

ただし、rspecテストを使用して実行しようとすると、ロードエラーが発生します。

bundle exec rspec

これは私のMacで動作し、Linuxマシンで動作しない理由がわかりません。

morten@Lux:/var/lib/jenkins/jobs/getdone/workspace$ bundle exec rspec
/var/lib/jenkins/jobs/getdone/workspace/spec/lib/commandExecutor_spec.rb:1:in `require': cannot load such file -- CommandsExecutor (LoadError)
    from /var/lib/jenkins/jobs/getdone/workspace/spec/lib/commandExecutor_spec.rb:1:in `<top (required)>'
    from /home/morten/.rvm/gems/ruby-1.9.3-p374/gems/rspec-core-2.12.2/lib/rspec/core/configuration.rb:789:in `load'
    from /home/morten/.rvm/gems/ruby-1.9.3-p374/gems/rspec-core-2.12.2/lib/rspec/core/configuration.rb:789:in `block in load_spec_files'
    from /home/morten/.rvm/gems/ruby-1.9.3-p374/gems/rspec-core-2.12.2/lib/rspec/core/configuration.rb:789:in `each'
    from /home/morten/.rvm/gems/ruby-1.9.3-p374/gems/rspec-core-2.12.2/lib/rspec/core/configuration.rb:789:in `load_spec_files'
    from /home/morten/.rvm/gems/ruby-1.9.3-p374/gems/rspec-core-2.12.2/lib/rspec/core/command_line.rb:22:in `run'
    from /home/morten/.rvm/gems/ruby-1.9.3-p374/gems/rspec-core-2.12.2/lib/rspec/core/runner.rb:80:in `run'
    from /home/morten/.rvm/gems/ruby-1.9.3-p374/gems/rspec-core-2.12.2/lib/rspec/core/runner.rb:17:in `block in autorun'

require行はちょうど言います

require 'CommandsExecutor'

そしてcommandsExector.rbは私のlibディレクトリにあります。

4

1 に答える 1

2

OS X のファイル システムではデフォルトで大文字と小文字が区別されませんが、Linux のファイル システムでは通常、大文字と小文字が区別されます。ファイルの名前は であると言うcommandExecutor.rbので、require の正しい方法は

require 'commandExecutor'

PS: 補足として、Ruby (および他のほとんどのプログラミング言語) のファイル名に大文字を使用しないのは一般的な慣習であり、C# と Java はいくつかの顕著な例外です。

于 2013-01-27T16:20:45.137 に答える