質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

Q&A

解決済

1回答

1055閲覧

Capistranoを使ってassets:precompileができない

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

0グッド

0クリップ

投稿2018/11/09 08:47

いつもお世話になっています。

表題の通り、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 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

自己解決できました。

config/secrets.ymlのインデントを修正することで直すことができました。

色々なサイトを見てみると、

NoMethodError: undefined method `deep_symbolize_keys' for #<String:0x00007fa4442f6c88>

と言ったエラーが表示された場合は、 

  • config/database.yml

-config/secrets.yml

などを調べると良いかもしれません

投稿2018/11/09 10:41

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問