1

我在 Rails 应用程序中使用回形针上传图像。众所周知,默认情况下回形针会在 rails 路径中创建公共目录。

但是我在使用 capistrano 部署我的应用程序时遇到了麻烦。每当我使用 capistrano 部署我的代码时,它都会替换我的上传目录。所以我正在尝试实现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...

4

2 回答 2

2

这样做的“正确”方法是将文件保存在 public/upload/.. 目录中并忽略来自 git 的上传文件夹。然后创建从发布当前目录到共享目录的符号链接(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"
于 2013-11-09T18:27:30.367 回答
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"
于 2014-08-08T03:24:40.413 回答