2015-11-12 23 views
1

我正在寫rails 4應用程序,我試圖重構assets.rb文件。如何將塊傳入Rails.application.config.assets?

當期的狀態:

Rails.application.config.assets.enabled = true 
Rails.application.config.assets.version = '1.0' 
Rails.application.config.assets.prefix = '/sprockets' 
Rails.application.config.assets.precompile += %w(404.html 500.html) 
Rails.application.config.assets.precompile << %w(big array of css files) 
Rails.application.config.assets.precompile << %w(big array of js files) 

我想看到:

Rails.application.config.assets do |assets| 
    assets.enabled = true 
    assets.version = '1.0' 
    assets.prefix = '/sprockets' 

    assets.paths << "#{Rails.root}/app/assets/plugins" 
    assets.paths << "#{Rails.root}/app/assets/html" 

    assets.precompile += %w(404.html 500.html) 
    assets.precompile << /\.(?:svg|eot|woff|ttf|swf)\z/ 

    # css 
    assets.precompile << %w(big array of css files) 

    # js 
    assets.precompile << %w(big array of js files) 
end 

是否有可能一個代碼塊傳遞到Rails.application.config.assets

回答

1

不可能的,因爲資產預計不會,如果你看它的簽名S擋。您可以通過它,但它不會對資產產生任何影響。

+0

非常糟糕。謝謝。拉請求到軌道呢? :) – bmalets

+1

@bmalets,不需要,嘗試創建一個臨時變量等於Rails.application.config.assets並使用它。我無法檢查它現在是否有效。 –

0

我不是很熟悉的軌道,但這樣的事情可能工作作爲一個變通:

def configure_assets obj 
    yield obj 
end 

configure_assets(Rails.application.config.assets) do |asset| 
    asset.enabled = true 
    asset.version = '1.0' 
    # ...etc.... 
end 
0

使用tap

Rails.application.config.assets.tap do |assets| 
    assets.enabled = true 
    # ... 
end