5

gemfileに参照を入れずに、Rails 3アプリでgemにアクセスできるようにする方法を考えています。これを ruby​​-debug で実行したい (私はruby​​-debug19を使用しています)。私はこれをデバッグに使用していますが、私のチームの全員がそうしているわけではなく、私が使用できるようにするためだけに依存関係を強制することはあまり外交的ではないようです。別の方法はありますか?

それが問題になる場合は、Rails3、Bundler 1.0.0、Ruby 1.9.2、RVM、OSX Snow Leopard を使用しています

余談ですが、gemfile グループ機能を使おうと思ったのですが、これも違和感があります。グループは、factory_girl のように特定の環境でのみ依存関係がある場合に適しているように見えますが、ruby-debug を使用すると、使用する場合を除き、そこに存在する必要はありません。

4

5 に答える 5

3

これは本当に醜く、gemfile からは取り出せませんが、異なる環境で gem に 2 つの異なるソースを使用できるように、Gemfile でこれを行います。

if ENV['MY_RDEBUG_VAR'] == "i_want_to_use_rdebug"
  gem "ruby-debug"
end

システムに設定するのはあなただけの、あいまいな環境変数にするだけです。そうすれば、同僚に環境変数が設定されず、gem がインストールまたはロードされることはありません。

于 2010-09-20T18:24:05.853 に答える
2

Rails 3はシステムGemを分離するため、できません。

私の提案は、オプションを使用してGemfileにGemを追加することです。これにより、Gem:require => falseが含まれ、インストールされますが、ロードされることはありません。次に、アプリで gem を手動で要求します。

または、ベンダー フォルダー (Gem 用のフォルダーがあるはずです) 内のプロジェクトにバンドルし、SCM 内の特定の gem フォルダーを無視して、同僚が影響を受けないようにすることもできます。

于 2010-09-20T16:04:00.620 に答える
0

最終的に、次のコードをRails初期化子に追加し、.git / info/excludeファイルで無視しました。

$: << Bundler.bundle_path.join("gems", "ruby-debug19-0.11.6", "cli")
$: << Bundler.bundle_path.join("gems", "ruby-debug-base19-0.11.24", "lib")
$: << Bundler.bundle_path.join("gems", "linecache19-0.5.11", "lib")
$: << Bundler.bundle_path.join("gems", "columnize-0.3.1", "lib")
require 'ruby-debug'

これは機能しますが、誰かが実際にこれを行う必要があるかどうかはわかりません。これらの依存関係をgemファイルに配置する必要があるという事実を受け入れるのがおそらく最善です。

于 2010-09-22T15:26:26.450 に答える
0

これを達成するためのクリーンな方法があればいいと思う他のいくつかのケースをこれがカバーしていないことを私は知っています-autotest-growlそしてautotest-fsevent頭に浮かぶだけでなく、私.irbrcがするより良い経験のために私が必要とする/救助する多くのことwirbleやhirbのように、すべての人に強制したくないのですが、特に、複数のRubyバージョンに対するテストが苦痛の一部である場合はruby-debugruby-debug- wrappergemが役立ちます。

バージョンのインストールを避けたい場合はruby-debug、他の人が提案したオプションが現在の唯一の方法だと思います。

于 2010-12-18T04:39:08.310 に答える
0

これは、ruby1.8と1.9の両方でruby_debugを使用するための私自身のソリューションです。

if RUBY_VERSION.include?('1.9')
  ruby_debug = 'ruby-debug19'  # new branch for ruby-debug that supports 1.9
else
  ruby_debug = 'ruby-debug'
  gem 'fastercsv' # ruby 1.9 bundles FasterCSV now
end


group :test do
  gem 'webrat'
  gem "factory_girl"
  gem 'shoulda'

  # gem 'redgreen'
  gem 'autotest-rails'
  gem 'autotest-fsevent'
  gem 'autotest'  
  gem ruby_debug
end

group :development do
  gem ruby_debug
end
于 2010-10-10T04:37:52.210 に答える