Ruby on rails rails资产管道关于唯一散列的问题

Ruby on rails rails资产管道关于唯一散列的问题,ruby-on-rails,ruby-on-rails-3,asset-pipeline,Ruby On Rails,Ruby On Rails 3,Asset Pipeline,1) 为什么已知未更改的图像(visa徽标)在一台服务器上有3个不同版本,在另一台服务器上有4个不同版本。这两台服务器位于不同的环境中: ls -la public/a/visa-* -rw-r--r-- 1 rails rails 1506 2012-03-04 06:33 public/a/visa-2c267b881e96647fbf8297637daf7132.gif -rw-r--r-- 1 rails rails 1506 2012-01-14 02:33 public/a/vis

1) 为什么已知未更改的图像(visa徽标)在一台服务器上有3个不同版本,在另一台服务器上有4个不同版本。这两台服务器位于不同的环境中:

 ls -la public/a/visa-*
-rw-r--r-- 1 rails rails 1506 2012-03-04 06:33 public/a/visa-2c267b881e96647fbf8297637daf7132.gif
-rw-r--r-- 1 rails rails 1506 2012-01-14 02:33 public/a/visa-603d00ea229b0cb010f2cd1a0a486769.gif
-rw-r--r-- 1 rails rails 1506 2012-03-13 18:34 public/a/visa-fe533b87916500d8ab2ce4a72f45b942.gif

$ ls -la public/a/visa-*
-rw-r--r-- 1 rails rails 1506 2011-12-24 19:35 public/a/visa-4506288212ff5ef40a1af89abd829294.gif
-rw-r--r-- 1 rails rails 1506 2012-03-13 01:19 public/a/visa-4559e644c6dc9eccb35fc06cf3696bef.gif
-rw-r--r-- 1 rails rails 1506 2011-09-18 15:11 public/a/visa-873a9dddb6815e34ddc6049cfb3ec7d8.gif
-rw-r--r-- 1 rails rails 1506 2012-02-26 01:23 public/a/visa-9678ba047d426c775771509f364e8590.gif
。。。这种模式适用于我拥有的所有资产。我认为这个想法是让文件名基于该文件的内容

2) 如果文件名基于文件的内容,rails如何映射到包含散列的经过认证的路径

3) 如果文件名应该基于文件的内容,为什么每次在部署过程中部署时都要“预编译”我的资产 --现在在我的应用程序虚拟机上编译资产需要6分钟。在我部署期间。我部署的其余部分可能需要30秒。 --为什么不推荐在部署之前编译您的资产、将它们检查到源代码管理中并进行部署的模式?

1)我认为早期版本的Sprocket中有一个错误,您使用的是哪一版本的Rails(和Sprocket)

2) Rails基于在预编译时生成的manifest.yml文件将资产映射到哈希名称。链轮将映射的散列传递回Rails,并将其保存在public/assets中。当Rails启动时,它会将该文件加载到内存中,以便快速访问

3) 您可以在本地编译并提交。唯一需要注意的是,您需要在development.rb中更改资产路径前缀,以避免在dev模式下为这些静态资产提供服务

1)我认为链轮的早期版本中存在一个bug,您使用的是哪个版本的导轨(和链轮)

2) Rails基于在预编译时生成的manifest.yml文件将资产映射到哈希名称。链轮将映射的散列传递回Rails,并将其保存在public/assets中。当Rails启动时,它会将该文件加载到内存中,以便快速访问


3) 您可以在本地编译并提交。唯一需要注意的是,您需要在development.rb中更改资产路径前缀,以避免在dev模式下为这些静态资产提供服务

关于第3点(资产预编译性能),我可以确认,在Rails(3.2+)的最新版本中,性能有了显著的提高——这是早期版本中的一大难题。这并不是说它很快:-)。有关避免本地编译陷阱的详细信息,请参见我的。我使用的是3.2.2。我很确定我的宝石也是最新的。我将在下次部署时对我的资产进行rm以验证#1.2/3似乎合理,我仍然不明白为什么推荐的模式是在部署过程中执行所有这些操作……我认为原因是“没有意外”。在第3点(资产预编译性能)上,我可以证实,在Rails(3.2+)的最新版本中,性能有了显著的提高——这在早期版本中是一个很大的问题。这并不是说它很快:-)。有关避免本地编译陷阱的详细信息,请参见我的。我使用的是3.2.2。我很确定我的宝石也是最新的。我将在下次部署时对我的资产进行rm以验证#1.2/3似乎合理,我仍然不明白为什么推荐的模式是在部署过程中执行所有这些操作……我认为原因是“没有意外”。它就像魔术一样工作,没有公共/资产中的文件要提交。