使用 RVM Gemsets & Bundler & RubyMine



我使用RVM来管理Ruby版本
在我的项目中,我使用Bundler来管理项目的宝石。

RVM也有宝石
宝石集中的宝石与Bundler的宝石没有任何联系←这是正确的吗
我得出这个结论是因为gem文件存储在不同的位置:
RVM宝石组:~/.rvm/gems/ruby-2.0.0-p247@myApp
Bundler:[my_app_dir]/vendor/bundle/gems
所以应用程序使用Bundler宝石,而不是RVM宝石集宝石。

但是当我把gem添加到我的Gemfile中时,RubyMine IDE会向我显示警告,这个gem不在RVM gemset中。所以我也将这个宝石添加到RVM宝石集(只是为了消除这个警告)。

所以问题是:

  1. 有没有什么好的理由在两个地方都添加宝石(RVM宝石集和宝石文件)
  2. 如果没有,为什么RubyMine要警告我
  1. 有没有什么好的理由在两个地方都添加宝石(RVM宝石集和宝石文件)

gemset是附带的,Gemfile绝对是声明依赖关系的地方。你把这些宝石存放在哪里取决于你。

听起来Bundler被配置为将它们存储在项目本地路径中,但您希望它们位于gemset中。Bundler在某个时刻通过运行bundle install --path vendor/bundle/gems获得了该配置。它将该配置存储在project_dir/.bundle/config:的项目配置文件中

BUNDLE_PATH: vendor/bundle/gems

我不熟悉Rubymine,但如果您使用Bundler(即bundle exec rails server)运行Rails服务器,则可以忽略该警告。Bundler将正确加载Gemfile中列出的宝石。

如果您想使用Bundler缓存的gemset而不是,您只需从Bundler配置文件中删除该行,然后用bundle install重新安装您的gem。

  1. 如果没有,为什么RubyMine要警告我

我的猜测是,Rubymine没有阅读Bundler项目配置(在project_path/.bundle/config中),也不了解gem的安装位置。

您(或者如果您在团队中工作,您团队中的某个人)曾经完成过bundle install并指定了安装文件夹。在您的案例中为vendor/bundle/gems。Bundle会记住这个设置,并且所有对Bundle命令的下一次调用都将使用相同的路径。

这样做有一个很好的理由:您的应用程序文件夹将包含所有需求,并且更容易重新分发(例如)。

现在,如果您希望该捆绑包在正常位置安装您的宝石,您可以执行以下操作:

  • 运行将使用默认位置的bundle install --system
  • 或者:bundle将其设置存储在配置文件中,我认为.bundle/config,您可以也检查一下那个。通常不需要,因为bundle install --system会设置再次正确
  • 然后可以安全地删除vendor/bundle/gems文件夹

不,出了问题,vendor/bundle下不应该有任何东西,应该都在~/.rvm/gems下/ruby-2.0.0-p247@myApp也许~/.rvm/宝石/ruby-2.0.0-p247@global假设.rvmrc(或.ruby版本)设置正确。

"gem-env"是什么样子的?还有"bundle env"?

所以这只花了我3天的时间,因为我在这里发现的其他东西都没有帮助。我还通过RubyMine同时运行多个项目(以及不同的版本),因此设置我的GEM_PATH和从命令行启动对我来说不起作用。我将IntelliJ与RM插件一起使用,这应该在RM单机版上起作用。

Bundler似乎将自定义gem或自定义repos中的gem安装在与rubygems或github中的gems不同的目录中。

/用户/YOURUSER/.rvm/environments/ruby-{version}\@yourgemset/bundler/gems

我没能修复的一件事是在GEMFILE中,我有一些自定义的git_sources,rubymine突出显示了这些,并警告我它在我的捆绑包中找不到gem(你可以忽略这个警告;除非gem根本没有安装):

gem"somegem",custom_git:"用户/回购"

突出显示,警告为"在SDK中找不到Gem x"

但是Bundler安装了它,ruby能够加载它

#TLDR:让RUBYMine找到额外宝石并出现在外部库中的步骤

  1. vim~/.rvm/environments/ruby-{您的verion在这里}\@{你的gemset}
  2. 将bundler gems路径添加到GEM_path条目

    export GEM_PATH='/Users/YOURUSER/.rvm/gems/ruby-{version}@yourgemset/bundler/gems:{其余}'

  3. 保存文件
  4. 重新启动RubyMine/InIntelliJ,重新打开您的项目(如果未自动打开)
  5. 打开Project Structure对话框>Platform SDKs>选择正在使用的GEMSET
  6. /Users/YOURUSER/.rvm/environments/ruby-{version}@yourgemset/bundler/gems添加到类路径
  7. 点击OK,然后重新打开Project Structure对话框>Project Settings>Project
  8. 您的项目可能没有SDK所以请再次选择您正在使用的SDK并点击OK
  9. RM/IJ现在将重新索引文件
  10. 完成后,任何损坏/缺失的检查链接现在都应该得到修复。你应该能够反省你的宝石

在上面的说明中,当您运行捆绑包安装(从终端或RM)时,它可以成功工作,并且您已经正确设置了RVM,并且已经创建了gemset


我希望这能有所帮助!让我知道我是否应该澄清任何事情(快乐NYE)

相关内容

  • 没有找到相关文章

最新更新