我有一个Rails应用程序,其中有多个带有回形针附件的模型,这些模型都已上载到S3。此应用程序还具有经常运行的大型测试套件。这样做的缺点是每次测试运行都会将大量文件上载到我们的S3帐户,从而使测试套件运行缓慢。它还会减慢开发速度,并且需要您具有Internet连接才能处理代码。
是否有合理的方法基于Rails环境设置回形针存储机制?理想情况下,我们的测试和开发环境将使用本地文件系统存储,而生产环境将使用S3存储。
我还想将此逻辑提取到某种共享模块中,因为我们有几个需要此行为的模型。我想在每个模型中避免这样的解决方案:
### We don't want to do this in our models...
if Rails.env.production?
has_attached_file :image, :styles => {...},
:path => "images/:uuid_partition/:uuid/:style.:extension",
:storage => :s3,
:url => ':s3_authenticated_url', # generates an expiring url
:s3_credentials => File.join(Rails.root, 'config', 's3.yml'),
:s3_permissions => 'private',
:s3_protocol => 'https'
else
has_attached_file :image, :styles => {...},
:storage => :filesystem
# Default :path and :url should be used for dev/test envs.
end
更新:棘手的部分是,根据所使用的存储系统,附件的附件:path
和:url
选项需要有所不同。
任何意见或建议,将不胜感激!:-)