2011-09-07 8 views
0

私のrails3アプリケーションは、オブジェクトを格納するためにmadeleine(http://madeleine.rubyforge.org/)を使用しています。レールで許可エラー3

m = SnapshotMadeleine.new("data_dir") { 
    Array.new 
} 

このコードはローカルマシンで正常に動作しますが、サーバーでエラーが発生します。

Permission denied - data_dir 

トレースは、

/home/foo/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/fileutils.rb:243:in `mkdir' 
/home/foo/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/fileutils.rb:243:in `fu_mkdir' 
/home/foo/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/fileutils.rb:217:in `block (2 levels) in mkdir_p' 
/home/foo/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/fileutils.rb:215:in `reverse_each' 
/home/foo/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/fileutils.rb:215:in `block in mkdir_p' 
/home/foo/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/fileutils.rb:201:in `each' 
/home/foo/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/fileutils.rb:201:in `mkdir_p' 
madeleine (0.7.3) lib/madeleine.rb:319:in `ensure_directory_exists' 
madeleine (0.7.3) lib/madeleine.rb:314:in `initialize' 
madeleine (0.7.3) lib/madeleine.rb:48:in `new' 
madeleine (0.7.3) lib/madeleine.rb:48:in `new' 

でこのエラーがDATA_DIRディレクトリが既に存在しているかいないかが起こります。私はdata_dirディレクトリとルートディレクトリ777の許可を変更しましたが、エラーはまだ発生します。私が使用

はRVMと3.0とRuby 1.9.2-P290レール、と私は簡単なテストコードを書いて、それがエラーなしで働いていた

rails s -d -e production 

でサーバーを起動します。

require 'rubygems' 
require 'madeleine' 

madeleine = SnapshotMadeleine.new("data_dir") do 
    Array.new 
end 
madeleine.take_snapshot 

この問題の原因は何ですか?

答えて

0

私は、SnapshotMadeleine.newはFileUtils.mkdirにエラーが記述されているので、ディレクトリを作成しようとしています。

レールユーザーは、既に存在するフォルダに書き込むのではなく、フォルダを作成できるように、Webアプリケーションのルート(?)に書き込む権限を持っている必要があります。 SnapshotMadeleineのソースを変更して、すでに存在する場合はディレクトリを作成しないようにします。

+0

appディレクトリがrailsユーザのホームディレクトリの下にあり、ディレクトリが777であるため、railsユーザは書き込み権限があります。とにかく、何が間違っているのかわかりませんが、問題は、 webrick。 –