2013-03-24 97 views
0

我的应用程序托管在Heroku上,如果它可以不将文件上传到在Heroku上,而是直接向公众/文件夹,我想知道到的Linode - 说 - 的Linode上传文件使用CarrierWave

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

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

我想在尝试重新连接现有代码之前我会问。 会改变storage_dir方法如下诀窍?

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

感谢您的帮助 阿比纳夫

+0

也许一个客户端的JavaScript解决方案,您只需直接上传文件的Linode?你可以使用跨源资源共享 – John 2013-03-24 07:19:51

回答

0

所以,你使用CarrierWave?我不确定您目前如何上传到Linode,但我会采取刺。

因此,根据CarrierWave的GitHub上的文档,你需要添加这样的事情也许在你的config /初始化一个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