나는 우분투에서 내 레일 애플 리케이션에 일부 엑셀 파일을 구문 분석하는 데 사용하고 있습니다. 이것들은 Carrierwave와 함께 업로드됩니다. 공공/업로드에컨트롤러에서 Errno :: EACCES 업로드 우분투에서 레일로 캐리어 웨이브
excelx_file = params[:excel_file]
filex = MetadataUploader.new
filex.store!(excelx_file)
workbook = Excelx.new("#{filex.store_path}")
다음
있는 권한 :
drwxrwxr-x 2 pirames pirames 4096 Jun 13 14:03 metadata_ingestion
drwxrwxr-x 2 pirames pirames 4096 Jun 13 14:24 tmp
다음
있는 파일에 대한 권한 : 여기
ls -l public/uploads/metadata_ingestion/
total 608
-rw-r--r-- 1 pirames pirames 621504 Jun 13 14:24 Bozza_Pirames_Distribuito.xlsx
여기
내 실제 컨트롤러 라인이다 대신 실제 추적입니다 : 이제 동일한 코드 내 맥에 디바이스에서 완벽하게 작동 https://github.com/hmcgowan/roo/blob/master/lib/roo/excelx.rb에 @filename = 파일 이름
:
Errno::EACCES in IngestionController#upload
Permission denied - oo_2895_1872934321
Rails.root: /var/www/mascarino
Application Trace | Framework Trace | Full Trace
/home/pirames/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/fileutils.rb:247:in `mkdir'
/home/pirames/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/fileutils.rb:247:in `fu_mkdir'
/home/pirames/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/fileutils.rb:176:in `block in mkdir'
/home/pirames/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/fileutils.rb:175:in `each'
/home/pirames/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/fileutils.rb:175:in `mkdir'
roo (1.10.1) lib/roo/excelx.rb:95:in `initialize'
app/controllers/ingestion_controller.rb:24:in `new'
app/controllers/ingestion_controller.rb:24:in `upload'
actionpack (3.2.3) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (3.2.3) lib/abstract_controller/base.rb:167:in `process_action'
actionpack (3.2.3) lib/action_controller/metal/rendering.rb:10:in `process_action'
오류를 던지기 전에이라고 루에 실제 라인은 다음과 같다. 실행중인 서버는 dev에 우분투에 퓨마입니다. 사용 권한을 확인한 결과 내 Mac이 동일합니다. 폴더를 소유 한 사용자가 서버를 실행하는 것과 동일한 지 확인했습니다.
아이디어가 있으십니까? 내가 놓친 게 있니?
편집은 : 나는 또한 추적에 오류 메시지가 나타났습니다 :
Permission denied - oo_2895_1872934321
2895
는 푸마 서버가 실행의 PID입니다. # {filex.store_path} 대신 업로드 된 파일의 실제 경로를 전달하면 결과는 변경되지 않습니다.감사합니다.
나는 이것을위한 대답을 가지고 있다고 생각한다 : from : http : //roo.rubyforge.org/ 이 보석의 임시 파일은 'oo_'로 이름이 지정된 디렉토리에 저장되며 숫자 (현재 프로세스의 PID)는 입니다. 이 디렉토리는 현재 작업 디렉토리 내에 작성됩니다. 임시 파일에 다른 디렉토리를 사용하려면 환경 변수 ROO_TMP를 설정하십시오! (예 :의 경우 .bashrc 파일에서 "export ROO_TMP =/tmp"). ROO_TMP는 1.1.0 이상 릴리스에서 도입되었습니다. – Hiromichan