gpt4 book ai didi

ruby-on-rails - Mina 部署找不到包

转载 作者:数据小太阳 更新时间:2023-10-29 08:07:32 25 4
gpt4 key购买 nike

第一次使用 Ruby on Rails 应用程序尝试 Mina,但在以 root 用户身份部署时,它似乎没有看到 Bundler。

我正在使用 Digital Ocean 作为远程服务器。

如果我以相同的 root 用户身份通过​​ SSH 连接到远程服务器,bundle 运行良好。 Git 克隆有效,文件结构通过 :setup 设置,其他一切似乎都很好。

部署使用的是“root”用户,是的,我最终会更改为另一个用户。

这是我的 deploy.rb

require 'mina/bundler'
require 'mina/rails'
require 'mina/git'

set :domain, 'example.com'
set :deploy_to, '/var/www/example.com'
set :repository, 'git@git.example.co:example.git'
set :branch, 'digital_ocean'
set :shared_paths, ['log']

# Optional settings:
set :user, 'root' # Username in the server to SSH to.

task :setup => :environment do
... *standard code removed*
end

desc "Deploys the current version to the server."
task :deploy => :environment do
to :before_hook do
# Put things to run locally before ssh
end
deploy do
# Put things that will set up an empty directory into a fully set-up
# instance of your project.
invoke :'git:clone'
invoke :'deploy:link_shared_paths'
invoke :'bundle:install'
invoke :'rails:db_migrate'
invoke :'rails:assets_precompile'
invoke :'deploy:cleanup'

to :launch do
queue "mkdir -p #{deploy_to}/#{current_path}/tmp/"
queue "touch #{deploy_to}/#{current_path}/tmp/restart.txt"
end
end
end

这是“mina deploy --verbose”的详细输出:

-----> Creating a temporary build path
$ touch "deploy.lock"
$ mkdir -p "$build_path"
$ cd "$build_path"

-----> Fetching new git commits
$ (cd "/var/www/example.com/scm" && git fetch "git@git.example.co:example.git" "digital_ocean:digital_ocean" --force)
-----> Using git branch Cloning into '.'...

-----> Using git branch 'digital_ocean'
done.
$ git clone "/var/www/example.com/scm" . --recursive --branch "digital_ocean"

-----> Using this git commit

$ git rev-parse HEAD > .mina_git_revision
$ git --no-pager log --format='%aN (%h):%n> %s' -n 1
Carson Cole (e932114):
> removed gemfile.lock
$ rm -rf .git


-----> Symlinking shared paths
$ mkdir -p "."
$ rm -rf "./log"
bash: line 93: bundle: command not found
$ ln -s "/var/www/example.com/shared/log" "./log"

-----> Installing gem dependencies using Bundler
$ mkdir -p "/var/www/example.com/shared/bundle"
$ mkdir -p "./vendor"
$ ln -s "/var/www/example.com/shared/bundle" "./vendor/bundle"
$ bundle install --without development:test --path "./vendor/bundle" --deployment
! ERROR: Deploy failed.

-----> Cleaning up build
$ rm -rf "$build_path"
Unlinking current
$ rm -f "deploy.lock"
OK

! Command failed.
Failed with status 1 (19)

最佳答案

假设您的服务器上安装了 bundler ,您必须 specify the full path to the bundle command如果在路径中找不到。

set :bundle_bin, "/path/to/bundle"

关于ruby-on-rails - Mina 部署找不到包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34696808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com