我想从最新的 GitHub 源安装 gem。
我该怎么做呢?
好吧,这取决于所讨论的项目。一些项目的根目录中有一个 *.gemspec 文件。在这种情况下,它将是
gem build GEMNAME.gemspec
gem install gemname-version.gem
其他项目有一个 rake 任务,称为“gem”或“build”或类似的东西,在这种情况下,您必须调用“rake”,但这取决于项目。
在这两种情况下,您都必须下载源代码。
如果您使用的是 bundler,您需要在 Gemfile 中添加类似这样的内容:
gem 'redcarpet', :git => 'git://github.com/tanoku/redcarpet.git'
如果有 .gemspec
文件,它应该能够在运行 bundle install
时获取并安装 gem。
UPD。 如评论中所述,要使 Bundler 正常运行,您还需要将以下内容添加到 config.ru
:
require "bundler"
Bundler.setup(:default)
require "bundler" Bundler.setup(:default)
请参阅 bundler docs 了解更多详细信息
gem 'redcarpet', :git => 'git://github.com/tanoku/redcarpet.git', :branch => 'yourbranch'
gem 'redcarpet', github: 'tanoku/redcarpet'
。 akash.im/2012/06/05/bundler-new-github-option.html
gem 'redcarpet', :git => 'git://github.com/tanoku/redcarpet.git', :tag => 'v2.3.5'
<- :tag => ''
部分
试试 specific_install gem,它允许您从其 github 存储库(如“edge”)或任意 URL 安装 gem。对于在多台机器等上分叉宝石和对它们进行黑客攻击非常有用。
gem install specific_install
gem specific_install -l <url to a github gem>
例如
gem specific_install https://github.com/githubsvnclone/rdoc.git
specific_install
gem 上添加更多解释?
ERROR: While executing gem ... (NoMethodError) undefined method 'build' for Gem::Package:Module
听起来很酷,但我不会进一步研究它。只是想发布它对我不起作用的情况,以防其他人即将根据 SO 推荐试一试。
Bundler 允许您直接从 git 存储库使用 gem。在您的 Gemfile 中:
# Use the http(s), ssh, or git protocol
gem 'foo', git: 'https://github.com/dideler/foo.git'
gem 'foo', git: 'git@github.com:dideler/foo.git'
gem 'foo', git: 'git://github.com/dideler/foo.git'
# Specify a tag, ref, or branch to use
gem 'foo', git: 'git@github.com:dideler/foo.git', tag: 'v2.1.0'
gem 'foo', git: 'git@github.com:dideler/foo.git', ref: '4aded'
gem 'foo', git: 'git@github.com:dideler/foo.git', branch: 'development'
# Shorthand for public repos on GitHub (supports all the :git options)
gem 'foo', github: 'dideler/foo'
有关详细信息,请参阅 https://bundler.io/v2.0/guides/git.html
bundle
时,此类 git-gem- 依赖项不会全局安装,而是安装在当前用户的主目录中。乘客将作为您的网络服务器用户(例如 www-data
)运行 ruby,该用户无权访问此目录,因此不会加载此“git-gem”。您将收到错误 ... is not yet checked out. Run bundle install first
。
已过时(见评论)
如果项目来自 github,并且包含在 http://gems.github.com/list.html 的列表中,那么您只需将 github 存储库添加到 gems 源即可安装它:
$ gem sources -a http://gems.github.com
$ sudo gem install username-projectname
如果您从公共 GitHub 存储库获取 gem,可以使用简写
gem 'nokogiri', github: 'tenderlove/nokogiri'
你也可以做gem install username-projectname -s http://gems.github.com
在您的 Gemfile 中,添加以下内容:
gem 'example', :git => 'git://github.com/example.git'
您还可以添加 ref、branch 和 tag 选项,
例如,如果您想从特定分支下载:
gem 'example', :git => "git://github.com/example.git", :branch => "my-branch"
然后运行:
bundle install
您还可以使用 rdp/specific_install gem:
gem install specific_install
gem specific_install https://github.com/capistrano/drupal-deploy.git
如果您按照 gryzzly 的建议使用 bundler 进行安装,并且 gem 会创建一个二进制文件,那么请确保使用 bundle exec mygembinary
运行它,因为 gem 存储在 bundler 目录中,该目录在普通 gem 路径中不可见。
在新的 Linux 机器上,您还需要安装 git
。 Bundle 在幕后使用它。
gemname-version.gem
文件在调用gem build
时创建gem install gemname-version.gem
命令在哪里安装 git gem?我在本地机器上的任何地方都找不到以这种方式安装的引擎 gem。捆绑器将其隐藏在哪里?gem install gemname-version.gem
行应该是gem install --local gemname-version.gem
gem which gemname
应该告诉您特定的宝石在哪里,这对您不起作用吗?