我一直试图在EC2实例上部署rails应用程序。我已经采取的步骤是
当地:
Gemfile和bundle install编写来安装所有的宝石:
集团:开发做创业板,‘卡皮斯特拉诺’创业板,3-美洲豹,宝石‘卡皮斯特拉诺-铁路’,要求:假宝石‘卡皮斯特拉诺-班德勒’,要求:假宝石‘卡皮斯特拉诺-chruby’结束。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}config/deploy.rb中做了必要的修改,特别是
设置:chruby_ruby,'ruby-2.3.0‘在服务器/实例上:
/etc/profile.d/chruby.sh中:
源xx/chruby.sh源xx/auto.shdatabase.yml和application.yml。完成了所有这些工作之后,当我运行cap production deploy时,它从检查和git克隆以及链接文件和目录开始很好,但是在bundler:install上失败了,给出了一个错误,例如
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的示例,所以我无法确定自己的错误所在。
发布于 2019-11-13 16:54:55
表面上,问题在于“/bin/sh”,它不支持“源”。
当使用“bash”时,源是“.”的别名。命令。还不清楚系统上默认的'/bin/sh‘是什么。如果是/bin/dash (薄荷19),你必须用.‘替换每个灵魂。’
. 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下运行。理论上,将允许使用“源”的脚本在不发生更改的情况下工作。
case "$(readlink -f /proc/$$/exe)" in
*/dash) alias source=. ;;
esac发布于 2019-11-20 07:19:20
我同意破折号
但我还有一个方案
export SHELL=/bin/bash最后一行是
exec "$SHELL" "${shell_opts[@]}" -c "$command"因此,环境变量SHELL在这里扮演着重要的角色。
@炼金术士95您能检查一下chruby-exec的第一行吗?
你似乎在chruby上有更老的版本,因为确保chruby-exec在bash下运行。是在2013年添加的。
https://stackoverflow.com/questions/48241103
复制相似问题