Bar*_*acs 3 ruby deployment ruby-on-rails carrierwave cloud66
使用Cloud 66部署rails应用程序到digitalocean.com.除了尝试上传图像时的一些权限错误外,一切正常.
Errno::EACCES (Permission denied - /var/deploy/anabol/web_head/releases/20130608104347/public/uploads/tmp):
Run Code Online (Sandbox Code Playgroud)
image_uploader.rb
class ImageUploader < CarrierWave::Uploader::Base
...
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
...
end
Run Code Online (Sandbox Code Playgroud)
有一个描述,如何解决这里的问题:https: //www.cloud66.com/help/permission_denied_errors
我将store_dir路径更改为:
def store_dir
"#{Rails.root}/tmp/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
Run Code Online (Sandbox Code Playgroud)
但它没有帮助.我仍然收到此错误:
» 13:49:25.696 Errno::EACCES (Permission denied - /var/deploy/anabol/web_head/releases/20130608114659/public/uploads/tmp):
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
上传适用于image_uploader.rb中的此部分:
def cache_dir
# should return path to cache dir
Rails.root.join 'tmp/uploads/cache'
end
def store_dir
"#{Rails.root}/tmp/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
Run Code Online (Sandbox Code Playgroud)
但现在我得到:
ActionController::RoutingError (No route matches [GET] "/var/deploy/anabol/web_head/releases/20130608164223/tmp/uploads/profile/image/3/thumb_Screenshot_from_2013-06-05_17_27_54.png"):
Run Code Online (Sandbox Code Playgroud)
在视图上,仅显示图像路径.
有些方法可以在可以上传文件的主机上实现此功能.这里描述了两种方法,但有一些错误,现在已经纠正:https: //www.cloud66.com/help/permission_denied_errors
使用carrierwave进行图片上传的部署挂钩的工作示例:
#! /bin/bash
#load environment variables
source /var/.cloud66_env
#assign desired permissions
sudo chmod 0777 -R $RAILS_STACK_PATH/public/uploads
Run Code Online (Sandbox Code Playgroud)
(这样在重新部署时你不会丢失图像):在你的xy_uploader.rb中使用它:
def store_dir
"system/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1741 次 |
最近记录: |