いつもお世話になっています。
表題の通り、Capistranoを使ってRailsアプリをVPSにデプロイしているのですが、VPS内でassets:precompileができなくて困っています。
現在やりたいこと
Capistranoを使ってRailsアプリをVPSにデプロイ&VPS内でassets:precompileをしたいです。
試しにローカル環境内で以下のコマンドを試したところ上手くコンパイルできましたが、Capistranoを使った本番VPSのコンパイルはできない状況です。
bundle exec rake assets:precompile RAILS_ENV="production"
環境
-
Ruby 2.4.2
-
Rails 5.1.6
-
gem Capistrano3
-
本番VPS CentOS 7.1
現在の状況
Capistranoを使って、GitHubを通して本番VPSにRailsアプリをデプロイすることには成功しました。
そして、bundle installも成功しており、本番VPSのディレクトリを確認してgemが入っていることも確認済みです。
本番VPS内には、rbenvやRuby、bundler,node jsも入っています。
しかし、Capistranoを通してassets:precompileをする場合に、以下のようなエラーが発生してできません。
INFO [a634683c] Running RBENV_ROOT=$HOME/.rbenv RBENV_VERSION=2.4.2 $HOME/.rbenv/bin/rbenv exec bundle install --path /var/www/hoge_app/shared/bundle --without development test --deployment --quiet as hogehoge@111.11.1.1 DEBUG [a634683c] Command: cd /var/www/putiita_app/releases/20181109081627 && ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.4.2" ; RBENV_ROOT=$HOME/.rbenv RBENV_VERSION=2.4.2 $HOME/.rbenv/bin/rbenv exec bundle install --path /var/www/hoge_app/shared/bundle --without development test --deployment --quiet ) INFO [c6ddacae] Finished in 0.532 seconds with exit status 0 (successful). INFO [1bd6185f] Running RBENV_ROOT=$HOME/.rbenv RBENV_VERSION=2.4.2 $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile as hogehoge@111.11.1.1 DEBUG [1bd6185f] Command: cd /var/www/hoge_app/releases/20181109081627 && ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.4.2" RAILS_ENV="production" RAILS_GROUPS="" ; RBENV_ROOT=$HOME/.rbenv RBENV_VERSION=2.4.2 $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile ) DEBUG [2afac4e6] rake aborted! DEBUG [2afac4e6] NoMethodError: undefined method `deep_symbolize_keys' for #<String:0x00007fa4442f6c88> /var/www/putiita_app/shared/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/secrets.rb:29:in `block in parse' /var/www/putiita_app/shared/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/secrets.rb:24:in `each'
試しにローカル環境内で
bundle exec rake assets:precompile RAILS_ENV="production"
を実行すると、上手くコンパイルできます。
当該エラーに該当するであろうコード
以下は、当該エラーに該当するであろうコードを載せます。
deploy.rb
1 2# config valid for current version and patch releases of Capistrano 3lock "~> 3.11.0" 4 5set :repo_url, 'git@github.com:hogehoge/hoge.git' 6set :application, 'hoge_app' 7set :branch, 'master' 8set :user, 'hoge_user' 9set :ssh_options, { 10 forward_agent: true, 11 user: fetch(:user), 12 keys: %w(~/.ssh/github/id_rsa) 13} 14set :puma_threads, [4, 16] 15set :puma_workers, 0 16set :keep_releases, 5 17set :pty, true 18set :use_sudo, false 19set :stage, :production 20set :deploy_via, :remote_cache 21set :deploy_to, "/var/www/#{fetch(:application)}" 22set :puma_bind, "unix://#{shared_path}/tmp/sockets/#{fetch(:application)}-puma.sock" 23set :puma_state, "#{shared_path}/tmp/pids/puma.state" 24set :puma_pid, "#{shared_path}/tmp/pids/puma.pid" 25set :puma_access_log, "#{release_path}/log/puma.access.log" 26set :puma_error_log, "#{release_path}/log/puma.error.log" 27set :puma_preload_app, true 28set :puma_worker_timeout, nil 29set :puma_init_active_record, true 30set :rbenv_type, :user 31set :rbenv_ruby, '2.4.2' 32set :rbenv_prefix, "RBENV_ROOT=#{fetch(:rbenv_path)} RBENV_VERSION=#{fetch(:rbenv_ruby)} #{fetch(:rbenv_path)}/bin/rbenv exec" 33set :rbenv_map_bins, %w{rake gem bundle ruby rails} 34set :rbenv_roles, :all 35append :linked_dirs, 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system', 'public/uploads' 36append :linked_files, 'config/database.yml', 'config/secrets.yml' 37 38namespace :puma do 39 desc 'Create Directories for Puma Pids and Socket' 40 task :make_dirs do 41 on roles(:app) do 42 execute "mkdir #{shared_path}/tmp/sockets -p" 43 execute "mkdir #{shared_path}/tmp/pids -p" 44 end 45 end 46 before :start, :make_dirs 47end 48 49namespace :deploy do 50 desc "Make sure local git is in sync with remote." 51 task :check_revision do 52 on roles(:app) do 53 unless `git rev-parse HEAD` == `git rev-parse origin/master` 54 puts "WARNING: HEAD is not the same as origin/master" 55 puts "Run `git push` to sync changes." 56 exit 57 end 58 end 59 end 60 61 desc 'Initial Deploy' 62 task :initial do 63 on roles(:app) do 64 before 'deploy:restart', 'puma:start' 65 invoke 'deploy' 66 end 67 end 68 69 desc 'Restart application' 70 task :restart do 71 on roles(:app), in: :sequence, wait: 5 do 72 invoke 'puma:restart' 73 end 74 end 75 76 before :starting, :check_revision 77 after :finishing, :compile_assets 78 after :finishing, :cleanup 79end
deploy/production.rb
1server '本番VPSのIPアドレス', user: 'hoge_user', roles: %w{web app}, port: 19435 2server '本番VPSのIPアドレス', user: 'hoge_user', roles: %w{db}, port: 19435 3set :ssh_options, keys: '~/.ssh/conoha'
Capfile
1require "capistrano/setup" 2require "capistrano/deploy" 3require "capistrano/rbenv" 4require "capistrano/bundler" 5require "capistrano/rails/assets" 6require "capistrano/rails/migrations" 7require 'capistrano/puma' 8require "capistrano/scm/git" 9install_plugin Capistrano::Puma 10install_plugin Capistrano::SCM::Git 11 12 13 14# Load custom tasks from `lib/capistrano/tasks` if you have any defined 15Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。