【问题标题】:maintaining gems over time with rbenv & multiple projects使用 rbenv 和多个项目随着时间的推移维护 gem
【发布时间】:2016-08-25 01:57:10
【问题描述】:

我刚刚从使用 RVM 的多年开发转到 rbenv,而 rbenv 的一个方面我似乎无法理解:

当我在同一版本的 Ruby 下处理多个项目(每个项目都有自己的依赖项)然后停止处理其中一个项目时,如何轻松地从我的 gempath 升级它的所有依赖项(这显然是/Users/meltemi/.rbenv/versions/2.1.4/lib/ruby/gems/2.1.0)?

使用 RVM,每个项目都有一个 gemset,因此很容易删除它。

使用 rbenv 似乎每个 gem 的每个版本都进入同一目录,bundler 可以管理它。伟大的!但是假设我在 ProjectA 中经历了 bundle outdatedbundle update 然后 bundle clean 循环,这不会从 ProjectB 中删除所有我可能需要在当天晚些时候工作的宝石吗?

或者说我不再想在 ProjectA 上工作并想删除该项目以及与之关联的所有 gem?

也许我以错误的方式接近这个?!?希望有人能让我直截了当,因为关于 rbenv 的其他一切似乎都很简单而且很有意义!

【问题讨论】:

    标签: ruby-on-rails rubygems bundler rbenv


    【解决方案1】:

    我不确定bundle clean 的机制,但听起来它确实引入了删除与其他项目相关的宝石的可能性。

    你有几个选择:

    1. 您可以让所有 gem 版本存在于 ~/.rbenv/... 中,让 Bundler 为您管理它们。旧的/陈旧的宝石将存在。 (我目前正在这样做。)

    2.您可以使用rbenv-gemset 之类的插件来实现更多隔离。 (或切换回 RVM。)

    3. Bundler 还允许您指定安装 gem 的路径,您可以将它们安装在项目目录中(例如:/myapp/vendor/)

    # Per project
    bundle config --local path vendor
    bundle install
    # Saves configuration to /myapp/.bundle/config
    
    # Global
    bundle config --global path vendor
    bundle install
    # Saves configuration to ~/.bundle/config
    

    可能有其他方法可以解决这个问题,但这些都是我熟悉的方法。

    【讨论】:

    • 我想我对#1 的担忧是,随着时间的推移,~/.rbenv/... 将变成一堆臃肿的过时宝石。但是我猜想,随着仍然活跃的项目最终迁移到新版本的 Ruby,它们的包也会移动,所以一旦所有(或足够多的)项目从旧版本的 Ruby 转移,所有这些 gem 都可能被破坏……这是理智的吗?没有多少开发人员使用/vendor,但如果你将它添加到.gitignore,这可能会起作用……
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    相关资源
    最近更新 更多