如果通过Chef安装,则捆绑包无法找到/执行Ruby应用程序的宝石

伊姆兰·泰利(Imran Teli)

我正在尝试通过厨师部署一个ruby应用程序。我已经通过rvm安装了ruby和rubygems。

当我在外壳上手动安装捆绑软件--deployment时,我将所有捆绑软件下载到供应商/捆绑软件位置,并且一切正常。

但是,当我对使用bash资源的厨师执行相同操作时,会收到以下错误消息。我觉得PATH或环境变量有些问题。它也通过厨师下载所有宝石,但是当我打开外壳并检查是否出现错误时。请注意-厨师食谱执行无任何错误。

*bundle exec rake db:create RAILS_ENV=production
(in /home/xyz)
rake aborted!
undefined method `[]' for nil:NilClass
/home/xyz/Rakefile:4:in `require'
(See full trace by running task with --trace)*

# ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]

# gem -v
1.8.1

bundle -v
Bundler version 1.0.15

# gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.1
  - RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/local/rvm/gems/ruby-1.9.2-p290
  - RUBY EXECUTABLE: /usr/local/rvm/rubies/ruby-1.9.2-p290/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/rvm/gems/ruby-1.9.2-p290/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/local/rvm/gems/ruby-1.9.2-p290
     - /usr/local/rvm/gems/ruby-1.9.2-p290@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

    bash "bundle install" do
     user "root"
     cwd "/home/xyz/"
     code <<-EOH
     source /etc/profile.d/rvm.sh 
     rvm use 1.9.2-p290 --default 
     /usr/local/rvm/gems/ruby-1.9.2-p290/bin/bundle install --path  vendor/bundle
     /usr/local/rvm/gems/ruby-1.9.2-p290/bin/bundle exec rake db:create RAILS_ENV=production
     EOH
    end

这是我第一次部署任何ruby应用程序,我在Google上搜索了很多,并尝试了许多解决方案,但是却收到了越来越多的错误,但没有解决方案。任何形式的帮助将不胜感激。

谢谢,伊姆兰

马尔科姆·琼斯(Malcolm Jones)

因此,我相信您对RVM安装的ruby遇到一些问题的原因与linux + shell的性质有关。RVM当它为您提供可以在系统上安装的ruby构建列表时,掩盖了很多复杂的底层功能。简单的答案是RVM(类似于rbenv)通过连接到您的环境中而起作用PATH。...这是Sam Stephenson在这里提供的非常详细的解释:RVM和rbenv实际如何工作?但是我离题了。我的猜测是您的RVM安装是针对单个用户(例如,具有home目录的用户)进行的/home/xyz/在这一点上,我认为您的问题如下:

您是通过单用户安装来安装RVM的(此处详细信息:https : //rvm.io/rvm/install)。安装RVM时,他们可能会让您在这里执行此步骤:echo "source $HOME/.rvm/scripts/rvm" >> ~/.bash_profile此步骤向您添加命令,.bash_profile以便在每个新的会话/终端窗口上,您的用户(在本例中为user xyz)读取有关如何运行/使用RVM的信息。Chef中的bash资源实际上没有使用用于连接和运行命令的shell。我的想法是,如果您运行以下命令:

bash 'install_ruby_stuff' do cwd ::File.dirname(/home/xyz) code <<-EOH source /home/xyz/.rvm/scripts/rvm bundle exec rake db:create RAILS_ENV=production EOH end

我觉得它可能会更好一些。如果这不起作用,请运行which bundle并找出rvm将bundle存根(stub)安装在哪里的确切位置,然后bundle/path/to/bundle替换上面的内容,这也可能会有所帮助。Chef中的每个bash资源调用在本质上都被视为一个单独的shell,因此需要在调用bash资源的同一上下文中定义所需的任何变量PATHENV变量。

希望这对您有所帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

错误ITMS-包中找到90167号应用程序捆绑包

“应用程序安装失败:无法检查应用程序包”

“路径..将导致应用程序捆绑包之外的文件,无法使用。”错误,单点触摸/ Xamarin

无法安装应用程序错误:无效的捆绑软件-没有Apple Watch Binary

在模拟器中安装应用程序时,在.app中无法找到Simctl安装的捆绑包标识符

“错误ITMS-包中找到90167号应用程序捆绑包”错误

React-native firebase错误:无法确定应用程序的捆绑包标识符

无法使用@ ngtools / webpack创建Angular 5 Universal Server应用程序应用程序捆绑包

无法为即时应用程序模块创建应用程序捆绑包

无法在Google Play上上传应用程序捆绑包

Python无法找到已安装的(用户站点)应用程序

如果应用程序是通过捆绑发布的,Expo中的OTA更新是否有效?

iOS On Demand资源下载很好-但是在我需要使用它们的时候,应用程序无法在主捆绑包中找到它们

通过Windows应用程序打包项目创建应用程序包无法复制dll

如何从Android应用程序捆绑包生成的Google Play控制台中安装APK?

无法通过软件中心安装应用程序,“使用此解决方案”按钮无法执行任何操作

elementaryOS无法通过PPA安装应用程序

捆绑包未安装的宝石

使用Chef安装Windows应用程序

通过运行Ruby in Rails应用程序无法打开localhost

宝石安装在Rails应用程序本地测试中的供应商/捆绑下

现有红宝石应用程序的捆绑安装失败。我怀疑libv8

无法为Netbeans RCP应用程序构建OSGi捆绑包

如果应用程序进程终止,捆绑包如何发送到onCreate?

Installfest | Railsbridge |部署Rails应用程序| heroku推送已拒绝| 无法通过捆绑器安装宝石

捆绑包安装后Jekyll无法找到gem

如何找到程序包名称以使用终端安装应用程序?

无法在新的 Rails 应用程序中捆绑安装

我可以在本地测试从捆绑包部署的免安装应用程序吗?