0

長時間のプリコンパイルエラーのため、Railsプロジェクトをデプロイするための上限を取得できませんでした。cap deployのエラーをクリアするスクリプトが見つかりましたが、本番環境のRailsは500をスローし、application.cssはプリコンパイルされていないと言っています。

要約は次のとおりです。

セットアップ-Ruby2.0.0p0、Rails 3.2.13、Twitter-Bootstrap、CapistranoはPassengerとNginxを使用してVPSにデプロイします

元のコマンド:

cap deploy

エラー:

* executing "cd -- /var/www/scotch/releases/20130320194644 && /home/deploy/.rvm/gems/ruby-2.0.0-p0@global/bin/bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile && cp -- /var/www/scotch/shared/assets/manifest.yml /var/www/scotch/releases/20130320194644/assets_manifest.yml"
servers: ["198.211.112.227"]
[198.211.112.227] executing command
** [out :: 198.211.112.227] rake aborted!
** [out :: 198.211.112.227] FATAL:  role "deploy" does not exist

私のdeploy.rbファイル:

require "rvm/capistrano"
require "bundler/capistrano"
set :bundle_cmd, "/home/deploy/.rvm/gems/ruby-2.0.0-p0@global/bin/bundle"
set :bundle_dir, "/home/deploy/.rvm/gems/ruby-2.0.0-p0/gems"

set :rvm_ruby_string, :local
set :application, "scotch"
set :user, 'deploy'
set :domain, '198.211.112.227'
set :applicationdir, "/var/www/scotch"

set :scm, 'git'
set :repository,  "ssh://deploy@198.211.112.227/var/www/scotch.git"
#set :git_enable_submodules, 1 # if you have vendored rails
set :scm_passphrase, ""
set :branch, 'master'
set :git_shallow_clone, 1
set :scm_verbose, true

# roles (servers)
role :web, domain
role :app, domain
role :db,  domain, :primary => true

# deploy config
set :deploy_to, applicationdir
set :deploy_via, :export

# additional settings
default_run_options[:pty] = true  # Forgo errors when deploying from windows
 ssh_options[:keys] = %w(/home/user/.ssh/id_rsa)            # If you are using ssh_keysset :chmod755, "app config db lib public vendor script script/* public/disp*"set :use_sudo, false

# Passenger
namespace :deploy do
  task :start do ; end
  task :stop do ; end
  task :restart, :roles => :app, :except => { :no_release => true } do
    run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
  end
end

キャップファイル:

load 'deploy'
# Uncomment if you are using Rails' asset pipeline
load 'deploy/assets'
load 'config/deploy' # remove this line to skip loading any of the default tasks

Application.rbには次のものが含まれます。

config.assets.initialize_on_precompile = false

StackOverflowにある指示に従って:rake Assets:precompileがデータベースに接続しようとしています

Database.ymlは本番データベース用に設定されています。データベースは問題なく移行します。

現在、これに従い、スクリプトを追加しました: アセットの高速化:Rails 3.1 /3.2Capistranoデプロイメントによるプリコンパイル

プリコンパイルはVPSで機能し、-traceを使用してローカルで実行されます。

rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile

正常にデプロイされましたが、現在、私のアプリは「申し訳ありませんが、問題が発生しました」というサービスを提供しています。そして私のproduction.logは私にこのエラーを与えています:

ActionView::Template::Error (application.css isn't precompiled):
4:     %meta{:content => "width=device-width, initial-scale=1.0", :name => "viewport"}

app / asset / stylesheets / application.css.scss

.content {
background-color: #eee;
padding: 20px;
margin: 0 -20px; /* negative indent the amount of the padding to maintain the grid system */
-webkit-border-radius: 0 0 6px 6px;
-moz-border-radius: 0 0 6px 6px;
 border-radius: 0 0 6px 6px;
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.15);
-moz-box-shadow: 0 1px 2px rgba(0,0,0,.15);
 box-shadow: 0 1px 2px rgba(0,0,0,.15);
 }

編集-新しいエラーを表示する:何らかの理由で、今ではそれも到達せず、本番環境のrake db:migrateが正常に機能し、database.ymlがすべて正しいにもかかわらず、私のproduction.logファイルにこれが表示されます。

ActiveRecord::StatementInvalid (PG::Error: ERROR:  permission denied for relation     reviews
: SELECT  "reviews".* FROM "reviews"  LIMIT 30 OFFSET 0):
app/models/review.rb:10:in `search'
app/controllers/reviews_controller.rb:6:in `index'
4

1 に答える 1

1

application.csscssコードをマニフェストファイルから(たとえば)に移動することをお勧めしますcustom.css.scss。マニフェストファイルcssで、アプリケーションで使用するアセットを次のように宣言する必要があります。

*= require_self
*= require your_assets

アセットパイプライン管理の詳細については、このRailsガイドを参照してください。

于 2013-03-20T22:51:19.887 に答える