使用CarrierWave将文件上传到Linode

时间:2013-03-24 07:14:59

标签: heroku carrierwave linode

我的应用程序托管在Heroku上,我想知道是否可以将文件上传到Heroku上的公共/文件夹,但直接上传到 - 比如说 - Linode

我的应用程序同时使用Heroku和Linode。这两个人通过网络服务请求互相交谈。但一般来说,我尝试只在Linode上存储任何生成/上传的文件 - 而在Heroku上没有任何内容

现在我有一种情况,我希望允许用户上传文件。最终目的地是Linode。但目前,我不得不从客户端PC - > Heroku - >的Linode。然而,最佳解决方案是客户端PC - >的Linode

在我尝试重新连接现有代码之前,我想我会问。 将如下更改storage_dir方法的做法?

def storage_dir
  return http://<linode>/<local-folder>
end

感谢您的帮助 阿比纳夫

1 个答案:

答案 0 :(得分:0)

那么,您使用的是CarrierWave吗?我不确定你目前是如何上传到Linode的,但我会采取刺。

所以,根据CarrierWave关于GitHub的文档,您需要在config / initializers中添加类似于carrierwave.rb的文件:

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',          # required
    :aws_access_key_id      => 'xxx',          # required
    :aws_secret_access_key  => 'yyy',          # required
  }
  config.fog_directory  = 'name_of_directory'  # required
end 

当然,如果你使用的是亚马逊AWS S3。我在http://ruby-doc.org/gems/docs/p/phpfog-fog-0.4.1.2/Fog/Linode/Compute/Mock.html找到了linode(及其他存储服务)的一些雾文档。如果点击“new(options = {})”,您会看到@linode_api_key = options[:linode_api_key]。因此,我认为您将能够使用CarrierWave直接上传到Linode:

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'Linode',       
    :linode_api_key         => 'xxx',          
  }
  config.fog_directory  = 'name_of_directory'  
end