gpt4 book ai didi

ruby - 安装一个 gem 以用作在 Travis 上构建 python 项目的工具

转载 作者:太空宇宙 更新时间:2023-11-03 18:09:12 24 4
gpt4 key购买 nike

TL;DR 如何在 Travis 上为非 ruby​​(主要是 Python)项目安装 Ruby gem,这样我就可以使用 gem 提供的可执行文件作为构建系统的一部分。

我正在尝试安装一个 Ruby gem,用于在我的 python project 中构建一些额外的东西。 、测试后和部署前。具体来说,我想使用 github-changelog-generator为我自动生成更新日志。

我似乎无法安装到 root,因为 Travis 上新的容器化构建不允许 sudo

我尝试使用 gem install --user-install github_changelog_generator 安装。最初,只是在运行 github_changelog_generator 时出现了 command not found 错误。

在运行 github_changelog_generator 之前尝试 export PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH" 结果如下:

/home/travis/.rvm/rubies/ruby-1.9.3-p551/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:315:in `to_specs': Could not find 'github_changelog_generator' (>= 0) among 14 total gem(s) (Gem::LoadError)
Checked in 'GEM_PATH=/home/travis/.rvm/gems/ruby-1.9.3-p551:/home/travis/.rvm/gems/ruby-1.9.3-p551@global', execute `gem env` for more information
from /home/travis/.rvm/rubies/ruby-1.9.3-p551/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:324:in `to_spec'
from /home/travis/.rvm/rubies/ruby-1.9.3-p551/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_gem.rb:64:in `gem'
from /home/travis/.gem/ruby/1.9.1/bin/github_changelog_generator:22:in `<main>'
from /home/travis/.rvm/gems/ruby-1.9.3-p551/bin/ruby_executable_hooks:15:in `eval'
from /home/travis/.rvm/gems/ruby-1.9.3-p551/bin/ruby_executable_hooks:15:in `<main>'

这对我来说意味着它已经找到了但不太理解某些东西。

毫无疑问,对于比我拥有更多 Ruby 经验的人来说,这是显而易见的。

当前的travis yaml片段如下:

after_success:
- gem install --user-install github_changelog_generator
- export PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH"
- github_changelog_generator -u pyFFTW -p pyFFTW

最佳答案

更新:

我没有意识到 RVM 没有在 Python 项目上初始化,所以解决方法是让 RVM 设置环境,例如通过安装一个 Ruby 版本(而不是容器中默认的 1.9.3):

before_install:
- rvm get stable --auto-dotfiles
- rvm install 2.3.1

或者,如果您想要 RVM Ruby 的默认版本:

before_install:
- rvm default

或者,如果您只想在构建成功时安装 RVM(例如,您预计 Travis 失败的频率更高):

after_success:
- rvm default

RVM 将为您设置 GEM_HOMEGEM_PATH,这样 gembundler 等命令将使用正确的 Ruby 和路径。

(前面的答案如下 - 对调试仍然有用)

如果您正在安装 gem,PATH 并不是定位和加载 gem 的唯一重要变量。您还需要正确设置 GEM_HOME 和 GEM_PATH。

如果有疑问,在 gem install 之前运行 gem env,这将向您显示整个当前的 gem 环境(安装 gem 的位置,PATH 是什么,等等) .).您还可以运行 gem list 来验证 gem 是否已正确安装并可用。 gem contents github_changelog_generator 将准确显示文件的安装位置。

如果粘贴输出,需要更改的内容就会变得很明显。

Travis 还使用 bundler 加载 gem,因此如果您有一个 Gemfile 而该 gem 不在 Gemfile 中,在某些情况下它可能会被忽略。

同样,gem env 应该提供有关 Python 项目/容器上的 Ruby 环境的线索。

顺便说一句,.travis.yml 文件的其余部分是什么样的?你有设置语言吗?你有 sudo: false 设置吗?

关于ruby - 安装一个 gem 以用作在 Travis 上构建 python 项目的工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37640176/

24 4 0
文章推荐: C# - 保存程序的变量
文章推荐: python - Google App Engine 中的 OAuth 2.0 提供程序。没有谷歌帐户 - Python
文章推荐: javascript - Bootstrap - 禁用
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com