【发布时间】: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