我在rails应用程序中使用paperclip来上传图像。正如所有人都知道默认的paperclip在rails path中创建公共目录。
但是在使用capistrano部署我的应用程序时遇到了麻烦。每当我使用capistrano部署我的代码时,它都会替换我的uploads目录。所以我试图实现symlink
创建一个简短的因为我不是linux的专家我无法继续它可以任何人帮助我如何解决它
has_attached_file :upload,styles:
{ thumb: ["150x100#",:jpg], small: ["75x75#",:png]},
default_url: '/assets/avatar.jpg',
url: "/post_images/post_:post_id/:style/:filename"
这是我的网址,如何为此目录/var/uploads/post_:post_id...
答案 0 :(得分:2)
“正确”的方法是将文件保存在public / upload / ..目录中,并忽略git中的upload文件夹。然后创建从发布当前目录到共享目录的符号链接(MOVE上传文件夹首先到共享)。将其添加到deploy.rb
:
namespace :deploy do
task :create_symlinks, :role => :app do
run "ln -nfs #{shared_path}/uploads #{release_path}/public/uploads" #Create symlink for public files
run "ln -nfs #{shared_path}/system #{release_path}/system" #Create symlink for private files
run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml" #Create symlink for database
run "ln -nfs #{shared_path}/.rvmrc #{release_path}/.rvmrc" #Create symlink for rvm
end
end
before "deploy:finalize_update", "deploy:create_symlinks"
答案 1 :(得分:0)
使用Capistrano 3。
desc 'Persist Paperclip uploads'
task :create_symlinks do
on roles(:app) do
execute "ln -nfs #{shared_path}/system #{release_path}/system" #Create symlink for private files
end
end
after :published, "deploy:create_symlinks"