首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Rails中部署时运行/etc/profile.d/chruby.sh

无法在Rails中部署时运行/etc/profile.d/chruby.sh
EN

Stack Overflow用户
提问于 2018-01-13 15:02:22
回答 2查看 304关注 0票数 6

我一直试图在EC2实例上部署rails应用程序。我已经采取的步骤是

当地:

  1. 我通过用Gemfilebundle install编写来安装所有的宝石: 集团:开发做创业板,‘卡皮斯特拉诺’创业板,3-美洲豹,宝石‘卡皮斯特拉诺-铁路’,要求:假宝石‘卡皮斯特拉诺-班德勒’,要求:假宝石‘卡皮斯特拉诺-chruby’结束。
  2. 我编辑了我的Capfile以要求模块 需要"capistrano/setup“要求”capistrano/ install_plugin /Git“需要"capistrano/scm/git”install_plugin Capistrano::SCM::Git需要"capistrano/chruby“要求"capistrano/bundler”要求"capistrano/rails/assets“要求”capistrano/rails/迁移“需要"capistrano/puma”Dir.glob(“lib/capistrano/Task/*..rake”).each{ require r}
  3. 我也在config/deploy.rb中做了必要的修改,特别是 设置:chruby_ruby,'ruby-2.3.0‘

在服务器/实例上:

  1. 已安装的Ruby
  2. 安装了Chruby并包含在/etc/profile.d/chruby.sh中: 源xx/chruby.sh源xx/auto.sh
  3. 为应用程序创建了一个文件夹,并创建了database.ymlapplication.yml

完成了所有这些工作之后,当我运行cap production deploy时,它从检查和git克隆以及链接文件和目录开始很好,但是在bundler:install上失败了,给出了一个错误,例如

代码语言:javascript
复制
01 /usr/local/bin/chruby-exec ruby-2.3.0 -- bundle install --path /home/deploy…
01 /bin/sh: 2: /etc/profile.d/chruby.sh:
01 source: not found
01
01 /bin/sh: 3: /etc/profile.d/chruby.sh:
01 source: not found
01
01 /bin/sh: 1:
01 chruby: not found
01

由于只有使用RVM或JRuby将Rails部署到AWS的示例,所以我无法确定自己的错误所在。

EN

回答 2

Stack Overflow用户

发布于 2019-11-13 16:54:55

表面上,问题在于“/bin/sh”,它不支持“源”。

当使用“bash”时,源是“.”的别名。命令。还不清楚系统上默认的'/bin/sh‘是什么。如果是/bin/dash (薄荷19),你必须用.‘替换每个灵魂。’

代码语言:javascript
复制
. xx/xx/xx/chruby.sh
. xx/xx/xx/auto.sh

可能需要对引用的文件(/etc/profile.d/*..sh)进行类似的修复,这些文件可能使用“source”。

假设'/bin/ls‘是破折号的话,更新1 (与readlink -f /bin/sh见鬼,它将显示/bin/dash或其他*sh程序)。如果使用“dash”,则可以在/etc/profile中设置alias,检查是否在dash下运行。理论上,将允许使用“源”的脚本在不发生更改的情况下工作。

代码语言:javascript
复制
case "$(readlink -f /proc/$$/exe)" in
    */dash) alias source=. ;;
esac
票数 4
EN

Stack Overflow用户

发布于 2019-11-20 07:19:20

我同意破折号

但我还有一个方案

  1. 在chruby-exec中添加shebang
  2. export SHELL=/bin/bash

github上的chruby-exec源

最后一行是

代码语言:javascript
复制
exec "$SHELL" "${shell_opts[@]}" -c "$command"

因此,环境变量SHELL在这里扮演着重要的角色。

@炼金术士95您能检查一下chruby-exec的第一行吗?

你似乎在chruby上有更老的版本,因为确保chruby-exec在bash下运行。是在2013年添加的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48241103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档