1

次のような大規模な Middleman プロジェクト内に、それぞれ独自のスタイルシート アセットを持ついくつかのマイクロサイトがあります。

project/
  source/
    microsite1.com/
      stylesheets/
      index.haml
    microsite2.com/
      stylesheets/
      index.haml
    stylesheets/
    index.haml
  config.rb

現在、本番環境では、各マイクロサイトはドメイン ルート経由でアクセスされますhttp://microsite1.com/。しかし、上記のディレクトリ構造は、私のウェブホストがこれらのマイクロサイトを管理するために必要なものであるため、開発中は でこれらにアクセスするのが理想的http://localhost:4567/microsite1.com/です。

ただし、アセット ヘルパーが出力するパスは相対的なものではありません。たとえば、microsite1.com/index.haml次のようになります。

= stylesheet_link_tag "screen"

収量

<link href="/stylesheets/screen.css" media="screen" rel="stylesheet" type="text/css">

:relative_assets が設定されていない場合、利回り

<link href="../stylesheets/screen.css" media="screen" rel="stylesheet" type="text/css">

それを設定します。前の出力は本番環境では正しいです。後者は、本番環境でも開発環境でも正しくありません。

でテストできるように Middleman を構成する方法はありますhttp://localhost:4567/microsite1.com/か? または、シミュレートできる方法はありhttp://microsite1.com/ますか? /etc/hosts( IPアドレスを指していないのでうまくいかないようですが、 を変更しようと思いました)

4

2 に答える 2

0

なぜcss_dir設定に触れる必要があるのですか?stylesheet_link_tag次のようにヘルパーを使用できるはずです...

<%= stylesheet_link_tag "../microsite1.com/stylesheets/microsite1" %>

... にあるテンプレート内source/microsite1.com。これはあなたに与えるはずです...

<link href="/stylesheets/../microsite1.com/stylesheets/microsite1.css" media="screen" rel="stylesheet" type="text/css" />
于 2013-08-31T16:52:27.000 に答える
0

これが私のハックですが、実際にはかなり機能的なソリューションです。

# microsite1.com/index.haml
- if development? then $asset_base = "/microsite1.com" end

# config.rb
configure :development do
  helpers do
    alias_method :original_asset_path, :asset_path
    def asset_path(*args)
      path = original_asset_path(*args)
      if not path =~ ABSOLUTE_URL_PATTERN && defined? $asset_base
        path = File.join($asset_base, path)
      end
      path
    end
  end
end

tl;dr指定された場合、すべての相対アセット (スタイルシート、JavaScript、画像) に何らかのパスasset_pathがプレフィックスとして付けられることを保証するためにフックしています。$asset_base(私よりRuby + Middlemanのほうが得意な人が、グローバル変数なしでこれを行う方法をアドバイスしたい場合は、私は完全に耳を傾けます。)

于 2013-08-31T23:40:21.407 に答える