初めて LESS を使用して RoR アプリケーションをセットアップしていますが、一部のアセット パスに問題があります。
何らかの理由で、 を使用して、asset_path()
またはを使用image_path()
して参照される LESS ファイル内で画像を参照@import
すると、埋め込まれた Ruby 呼び出しを含めるたびに、インポートされた LESS ファイルの処理が暗黙のうちに失敗するように見えます。
アプリケーションのセットアップ方法は次のとおりです。
ファイルシステム:
views
-> home
app
-> assets
-> images
-> general
-> side_shadow.png
-> home
-> chair.png
-> stylesheets
-> less
-> home.css.less.erb
-> template.css.less.erb
-> style.css.less.erb
-> fonts.css.less.erb
public
-> assets
-> general
-> side_shadow.png
-> home
-> chair.png
私のアプリケーションでは、「ホーム」はレンダリングされるビューです。ロードするときは、次を使用しますhome.css.less.erb
。
@import url("template.css.less.erb");
div#holder
{
background: url(<%= asset_path('home/chair.png')%>);
/* This resolves appropriately as /assets/home/chair.png... */
}
...
次にロードしますtemplate.css.less.erb
:
@import url("style.css.less.erb");
...
最終的に読み込まれるものstyle.css.less.erb
:
@import url("fonts.css.less.erb");
body
{
background-image: url(<%= asset_path('general/side_shadow.png') %>);
}
...
を使用してこれを実行するrake assets:precompile
と、中止され、ファイルで定義した CSS クラスfonts.css.less.erb
が未定義であることが通知されます。これは、フォント LESS ファイルを処理する機会がなかったことを示唆しているようです。
<%= asset_path('general/side_shadow.png') %>
ただし、これをリテラル pathに置き換えると'/assets/general/side_shadow.png'
、例外なく続行され、意図したとおりにページが読み込まれます。
この LESS ファイル (別の LESS ファイルによってインポートされたもの) に、この埋め込まれた Ruby 呼び出しを含めることができないのはなぜですか? ルートhome.css.less.erb
ファイルでは問題なく実行できますが、それが参照する LESS ファイルでは実行できません。
私の宝石ファイル:
source 'https://rubygems.org'
gem 'rails', '3.2.8'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'sqlite3'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails' #, '~> 3.2.3'
gem 'coffee-rails' #, '~> 3.2.1'
gem 'less-rails'
gem 'less-rails-bootstrap'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer', :platforms => :ruby
gem 'uglifier' #, '>= 1.0.3'
end
gem 'jquery-rails'
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# To use Jbuilder templates for JSON
# gem 'jbuilder'
# Use unicorn as the app server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'debugger'
- デイブ