alc*_*t95 6 ruby bash shell ruby-on-rails chruby
我一直在尝试在EC2实例上部署我的rails应用程序。我已经采取的步骤是
本地:
我通过Gemfile和编写了所有的gem bundle install:
group :development do
gem 'capistrano'
gem 'capistrano3-puma'
gem 'capistrano-rails', require: false
gem 'capistrano-bundler', require: false
gem 'capistrano-chruby'
end
Run Code Online (Sandbox Code Playgroud)我编辑了我Capfile的要求模块
require "capistrano/setup"
require "capistrano/deploy"
require "capistrano/scm/git"
install_plugin Capistrano::SCM::Git
require "capistrano/chruby"
require "capistrano/bundler"
require "capistrano/rails/assets"
require "capistrano/rails/migrations"
require "capistrano/puma"
Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }
Run Code Online (Sandbox Code Playgroud)我也进行了必要的更改config/deploy.rb,特别是
set :chruby_ruby, 'ruby-2.3.0'
Run Code Online (Sandbox Code Playgroud)在服务器/实例上:
已安装Chruby,并包括在/etc/profile.d/chruby.sh其中:
group :development do
gem 'capistrano'
gem 'capistrano3-puma'
gem 'capistrano-rails', require: false
gem 'capistrano-bundler', require: false
gem 'capistrano-chruby'
end
Run Code Online (Sandbox Code Playgroud)为app制作了一个文件夹,还创建了database.yml和application.yml。
完成所有这些操作后,当我运行时cap production deploy,它开始可以进行检查和git克隆以及链接文件和目录,但操作失败bundler:install,出现类似错误
require "capistrano/setup"
require "capistrano/deploy"
require "capistrano/scm/git"
install_plugin Capistrano::SCM::Git
require "capistrano/chruby"
require "capistrano/bundler"
require "capistrano/rails/assets"
require "capistrano/rails/migrations"
require "capistrano/puma"
Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }
Run Code Online (Sandbox Code Playgroud)
由于只有使用RVM或JRuby将Rails部署到AWS的示例,因此我无法弄清楚哪里出了问题。
从表面上看,问题出在“/bin/sh”上,它不支持“source”。
使用“bash”时,源是“.”的别名 命令。目前尚不清楚系统上默认的“/bin/sh”是什么。如果是 /bin/dash (Mint 19) - 你必须将每个 sourec 替换为 .'
. xx/xx/xx/chruby.sh
. xx/xx/xx/auto.sh
Run Code Online (Sandbox Code Playgroud)
您可能必须对可能使用“源”的引用文件(/etc/profile.d/*.sh)进行类似的修复。
更新 1
假设 '/bin/ls' 是破折号(用readlink -f /bin/sh,它将显示 /bin/dash 或其他 *sh 程序)。alias如果使用“dash”,可以在检查是否在 dash 下运行后在 /etc/profile 中进行设置。理论上,将允许使用“源”的脚本无需更改即可工作。
case "$(readlink -f /proc/$$/exe)" in
*/dash) alias source=. ;;
esac
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |