将图像从rails上传到linode

时间:2013-05-07 22:14:31

标签: ruby-on-rails-3.2 capistrano carrierwave linode

所以我想从linode上托管的运行rails 3 app上传图片,文件上传在本地工作,但是当我尝试远程执行时它失败了。我已经阅读了一些选项,但几乎所有选项都是这样的:

CarrierWave.configure do |config|

  if Rails.env.development? || Rails.env.test?
    config.storage = :file
  else
  config.storage = :fog
  config.fog_credentials = {
      :provider               => 'AWS',
      :aws_access_key_id      =>  'some_access_key_id',
      :aws_secret_access_key  => 'some_secret_key',
      :region                 => 'eu-west-1'
   }
   config.fog_directory = 'bucket_name'
   end
end

但是当我把它改成linode选项时它给了我

ArgumentError (linode is not a recognized storage provider):
  app/controllers/users_controller.rb:50:in `create'

然后我拿了sftp选项:

CarrierWave.configure do |config|
config.sftp_host = "my.host.com"
config.sftp_user = "username"
config.sftp_folder = "public_html/uploads"
config.sftp_url = "http://my.host.com/uploads"
config.permissions = 0666
config.directory_permissions = 0777
config.storage = :file  
config.sftp_options = {
  :password => "mypass",
  :port     => 22
}
end

但我仍然遇到同样的错误:

ArgumentError (linode is not a recognized storage provider):
 app/controllers/users_controller.rb:50:in `create'

我正在使用adit和rails 3.2使用git,然后在我做出并提交的每次更改后使用capistrano进行部署。我在这里遇到了类似的问题Uploading files to Linode using CarrierWave,但它没有答案。我不知道是否可以用carrierwave完成,但是会有任何建议,欢迎提供任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:2)

由于您的Linode实例上有20GB的存储空间且您的服务器已在Linode上运行,因此您希望选择carrierwave选项:file - 因为您只想将图像存储在您的(Linode)文件系统上服务器,而不是像S3这样的外部存储提供商。 (Linode不是公认的载波存储提供商,因此出现错误消息)

尝试使用与开发环境相同的选项保留它:

CarrierWave.configure do |config|
    config.storage = :file
end

答案 1 :(得分:0)

如果您的应用很小..那么我建议使用Openshift部署您的应用...结帐此deploying rails app in openshift

openshift提供了一个永久数据目录来存储数据及其免费,而且它非常容易在那里部署。