ルビーでは、いくつかの宝石は「グローバルな名前空間を汚染する」ことを選択します。「グローバル名前空間を汚染する」とはどういう意味ですか?
これはどういう意味ですか?
どのように起きているのでしょうか?
なぜこれを行う必要があるのでしょうか?
グローバルな名前空間と矛盾している2つの宝石に直面すると、私が「分離する」ことを選択するとき、私はどのようなトレードオフをしていますか?例えば
:私は両方のグローバルな名前空間を汚染されている2つの宝石を使用してい
:pryとgliはので、私はもう私の欲しいbinding.pry
Sを配置することはできませんよ。
一つsolutionは、モジュール全体CLIをラップすることです:
module Wrapper
include GLI::App
extend self
program_desc "..."
...
exit run ARGV
end
は、今私は私が好きな場所私のbinding.pry
Sを使用することができますよ。
これはなぜ機能しましたか?
「gliを分離する」ことを選択したとき、私はどのようなトレードオフをしていますか?それとも、「GLI::App
モジュールを分離するのですか?
なぜ、2つの小さなプロジェクトで、PryやGLIがグローバルな名前空間を汚染してしまうのですか? – mbigras
'pry'のようなものでピンを引っ張ると、' irb'のようにRubyを基本的に制御しますが、うまく動作するとは考えられません。条件付きで起動する必要がある場合、あなたのアプローチはほとんど有効と思われます。 – tadman