sel*_*eli 4 ruby gem rubymine gemfile
我使用的是RubyMine(v6.0.2),但是我的队友不是,所以他们需要gemfile中的"debugger"gem.我可以在运行RubyMine时有条件地不需要Gemfile(因此Gemfile可以共享并且相同),但由于未包含'debugger'gem,Gemfile.lock文件会根据项目上次使用RubyMine运行还是更改不.这会在冗余的Gemfile.lock更改中产生很多噪音.
我尝试过使用'debugger-xml'gem; 这并没有解决问题.
那么 - 我怎样才能运行RubyMine 6.0.2,使用Gemfile中的'debugger'gem,而不更改Gemfile.lock?
我一直在从桌子的另一边研究这个问题.我使用调试器gem,但有使用RubyMine的队友.
我们讨论了几个可能的解决方案,但它们都涉及Gemfile中的条件检查,这将导致修改的Gemfile.lock.
我搜索了一个更好的解决方案,发现了这个帖子:在使用bundler时如何使用Gem文件中的gem?
结合其中的一些答案,我提出了这个解决方案:
be rails s一切如何运作!
默认情况下,Bundler将使用名为Gemfile的文件,但可以通过指定BUNDLE_GEMFILE环境变量来覆盖此行为.Bundler将使用/创建与BUNDLE_GEMFILE同名的锁定文件.
shell函数__bundle_exec_custom将检查CWD中是否有Gemfile.local文件.如果有,则设置并使用BUNDLE_GEMFILE变量.否则,使用默认的Gemfile.
这将允许开发人员使用他们想要的任何宝石进行本地开发,而不必影响整个应用程序.
Gemfile.local:
source "https://rubygems.org"
gemfile = File.join(File.dirname(__FILE__), 'Gemfile')
if File.readable?(gemfile)
puts "Loading #{gemfile}..." if $DEBUG
instance_eval(File.read(gemfile))
end
gem 'debugger'
Run Code Online (Sandbox Code Playgroud)
函数和shell别名:
__bundle_exec_custom () {
if [ -f Gemfile.local ]
then
BUNDLE_GEMFILE="Gemfile.local" bundle exec $@
else
bundle exec $@
fi
}
# Rails aliases
alias be='__bundle_exec_custom'
Run Code Online (Sandbox Code Playgroud)