Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 回形针ruby on rails s3 to_文件方法_Ruby On Rails_Amazon S3_Heroku_Paperclip - Fatal编程技术网

Ruby on rails 回形针ruby on rails s3 to_文件方法

Ruby on rails 回形针ruby on rails s3 to_文件方法,ruby-on-rails,amazon-s3,heroku,paperclip,Ruby On Rails,Amazon S3,Heroku,Paperclip,我很困惑为什么回形针不适合我 访问s3上以前保存的文件以进行处理时,此曲别针s3存储类的方法会导致错误: def to_file style = default_style return @queued_for_write[style] if @queued_for_write[style] filename = path(style).split(".") extname = File.extname(filename) 发生的情况是,路径被拆分为一个数组,而F

我很困惑为什么回形针不适合我

访问s3上以前保存的文件以进行处理时,此曲别针s3存储类的方法会导致错误:

  def to_file style = default_style
    return @queued_for_write[style] if @queued_for_write[style]
    filename = path(style).split(".")
    extname  = File.extname(filename)
发生的情况是,路径被拆分为一个数组,而File.extname不接受该数组,它返回错误“无法将数组转换为字符串”

我真的很想得到一些建议;也许我的路径是错误的,但我看不出split将如何返回任何东西,除了导致File.extname出错的数组。这在开发中效果很好,但在heroku上就不是了,它在上周末之前工作过

先谢谢你

编辑

我在这件事上增加了一笔沉重的赏金,这反映了我持续的沮丧。真的,如果有人能帮我解决这个问题,我将不胜感激。我已经排除了之前的疑虑,可能是heroku存储库,重新安装了应用程序

据我所知,所有相关代码:

#photo.rb
has_attached_file :photo,
    :styles => { 
    :list => "150x100#",
    :article => "264>x210",
    :large   => "558>x380",
    :original => "1024>x768"
    },
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:url => ":s3_alias_url",
:s3_host_alias => "files.mydomain.com", #s3 bucket with dns cname record to subdomain
:path => "/photos/:hashed_path/:style/:id.:extension"


#config/s3.rb
bucket: files.mydomain.com
access_key_id: *******************
secret_access_key: **********************************

最新版本的回形针中的一个缺陷导致了这种情况。回到旧版本(看起来2.3.3没有这个问题),应该可以解决它

下面是引入bug的提交。有人甚至评论说这可能是一个bug:


我的理论是,为什么这在本地有效,但在Heroku上无效,是因为在
to_file
方法中操作的文件系统路径在每个环境中都是不同的,Heroku上的文件系统路径受此错误的影响,但不知怎的,您的本地路径绕过了它。

这段代码看起来确实是错误的。您是否有可能创建一个演示问题的最小测试应用程序并将其放在github上?不幸的是,没有。这不可能是回形针的错误,因为它在开发过程中工作良好,所以这段代码来自回形针。老实说,由于无法在本地重现错误,我感到非常紧张。我很快就会发布一大堆代码。我计划在heroku上用s3运行这个应用程序。(我是从您的zendesk支持票证来的。很抱歉,这不清楚。)另外,您提到它在开发中运行良好。作为heroku的一般规则,请确保使用
thin-e production start
在本地测试您的应用程序,以使其在更相似的环境中运行。我特别感兴趣的是您尝试访问图像和获得的堆栈跟踪的代码。如果你看不到日志,请与heroku一起重新打开你的记录。继续,这已经成为我在几天内读到的关于堆栈溢出的最有趣的线程。