【问题标题】:I'm developing a Ruby gem, how can I try it out locally with my Rails app?我正在开发一个 Ruby gem,如何使用我的 Rails 应用程序在本地试用它?
【发布时间】:2015-09-25 16:37:18
【问题描述】:

我正在开发一个用于 Rails 项目的 gem,并希望在本地与我的另一个 Rails 应用程序一起试用。

我用bundle exec rake release 构建了gem,它将一个.gem 文件放在/pkg 目录中。

然后,在我的 Rails 应用程序中,我将以下内容添加到我的 gemfile 中

gem 'mygem', '0.1.1', path: '/Users/me/projects/mygem/ruby/pkg'

然后我运行bundle install,它说它安装了gem。当我这样做时,它会从路径中删除宝石。 IDK 去了哪里。

当我启动 Rails 应用程序时,就好像根本没有包含 gem。

有趣的是,如果我添加一个甚至不存在的版本,它仍然显示 bundle install 可以正常工作。 (例如:gem 'mygem', '0.1.2345', path: '/Users/me/projects/mygem/ruby/pkg'

我应该怎么做才能使用 Rails 应用在本地试用我的 Gem?

这个问题与How can I specify a local gem in my Gemfile? 不同,因为我在我的 Gemfile 中明确告诉 bundle 使用本地 gem,并给出了路径,但它仍然不起作用。当我运行捆绑安装时,它说

Using mygem 0.1.1 from source at /Users/me/projects/mygem/pkg

所以你会认为它工作正常,但它仍然没有。

有趣的是,如果我尝试使用不存在的版本号,例如 mygem 1.2.3,它仍然可以成功运行 bundle install,这真的很奇怪,看起来像是一个错误:

Using mygem 1.2.3 (was 0.1.1) from source at /Users/me/projects/mygem/pkg

【问题讨论】:

  • this previous question上有很多答案
  • @creativereason 实际上我确实完全遵循了前面的问题之一,但它不起作用。这就是为什么我添加了令我困惑的细节,比如如果我需要一个不存在的版本,bundle install 似乎仍然可以成功运行。为什么会这样做?一定是我做错了什么……
  • 我不确定您使用路径时版本是否重要?您是否尝试过其他答案?具体Bloudermilk's option?
  • 当您使用路径时,版本显然很重要,因为当我没有列出版本时,捆绑安装失败。我看到了 bloudermilk 的答案,但我还没有使用 Github 甚至 git 作为 gem,所以我认为它不会起作用。无论如何,我的语法似乎应该可以工作,不是吗?
  • 'path` 不是用来指定在哪里可以找到本地构建的 Gem 文件,它是用来指向 gem 的解压源目录。在您的情况下,它将类似于gem 'mygem', path: '/Users/me/projects/mygem'

标签: ruby-on-rails ruby gem


【解决方案1】:

在与 Rails 项目并行处理本地 gem 时,我更喜欢使用以下内容:

gem 'foo',
  :git => '/path/to/local/git/repo',
  :branch => 'my-fancy-feature-branch'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 2015-08-17
    • 2020-09-20
    • 1970-01-01
    • 2012-05-13
    相关资源
    最近更新 更多