我有一个使用paperclip gem的Rails 4应用程序将图像存储在#{Rails.root} / public / system / ...这在开发中工作正常。
我已将一些开发图像检查到上面的文件夹中,但它们并没有出现在我正在部署的Ubuntu 13.10 EC2实例上。我正在使用Capistrano进行部署,它似乎正在创建所有的符号链接:
ls -l releases/20140402123457/public/system
lrwxrwxrwx 1 ubuntu ubuntu 28 Apr 2 12:35 releases/20140402123457/public/system -> /var/www/alpha/shared/system
但链接到的共享目录不包含我的图像。如何填充/ var / www / app / shared / public / system目录?我假设卡皮斯特拉诺会为我做这件事,但它是空的。
我已经搜索了许多capistrano / paperclip线程以获得答案,我已经尝试了所有可以在Capistrano -T中找到的capistrano部署命令。我相信我使用的是回形针的默认位置,回形针文档显示了我使用的路径:https://github.com/thoughtbot/paperclip#understanding-storage
我的Gemfile.lock显示我在这里使用的Gems:http://pastebin.com/iDv1Qm5K。
我一直在挠头,我盯着想知道我是不是疯了。我是否需要手动将开发映像复制到共享/系统目录中?我已经检查了图像是否在git中并在克隆时被提取出来,所以我希望我已经涵盖了可能导致这种情况的愚蠢错误的基础知识。关于如何进一步调查此问题的任何建议都将非常感激。
答案 0 :(得分:0)
感谢Marian Theisen的提示,我已经通过将种子图像文件从/ app / public / system目录移动到/ app / assets / seed_images /来解决了这个问题。
然后我在config / deploy.rb中创建了一个cap deploy任务,将图像复制到共享目录:
namespace :deploy do
desc "Move seed images into place"
task :move_seed_images_into_place, :roles => :app do
run "cd #{release_path}; cp -R app/assets/seed_images/* #{shared_path}/system"
end
end
并将after("deploy:update_code", "deploy:move_seed_images_into_place")
添加到我的config / deploy / staging.rb文件中。
简而言之,答案是我通过尝试在我的开发机器和登台主机之间共享公共/系统来做错事。相反,我已将种子图像移动到命名位置,我手动将它们移动到我的临时主机上。
这样做的好处是我可以在开发过程中删除我正在使用的图像而不会破坏安装 - 我有一个快照我想要保存在app / assets / seed_images目录中的图像。