2013-08-30 2 views
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"> 

с ним набор. Первый вывод правилен в производственном примере; последнее верно ни в производстве, ни в развитии.

Есть ли способ настроить посланника, чтобы я мог протестировать http://localhost:4567/microsite1.com/? В качестве альтернативы, можно ли каким-то образом смоделировать http://microsite1.com/? (Я думал попробовать изменить /etc/hosts, хотя это, похоже, не работает, поскольку я не указываю на IP-адрес)

+1

'/ source/microsite1.com/microsite1.css.scss' правильно преобразован в '/ build/microsite1.com/stylesheets/microsite1.css' для меня, когда вызывается' middleman build'. Параметр 'css_dir' имеет решающее значение, если вы используете помощников по активам, или я ошибаюсь? –

+0

Кажется, я немного перепутал некоторые конфигурации; Я использовал «таблицы стилей» в некоторых местах и ​​«сасси» в других, что, похоже, было тем, что подрывало «посредничество». Я уточню вопрос соответствующим образом. –

ответ

0

Вот мой Hacky, но на самом деле довольно функциональное решение:

# 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 

Т.Л., д-р я зацепив asset_path, чтобы гарантировать, что все относительные активы (таблиц стилей, сценарии, изображения) имеют префикс некоторого пути $asset_base, если это указано. (Если кто-то лучше на Ruby + Middleman, чем я, я хочу посоветовать, как я могу это сделать без глобальной переменной, я все уши.)

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" /> 
+0

Это решает проблему при тестировании, но затем снова разрывает ситуацию, когда микросайты развертываются в их окончательных домах (например, 'http: // microsite1.com'); это также не особенно масштабируемо. Я уточнил вопрос, чтобы быть более точным, и я включил, как я решил его более общим образом –

 Смежные вопросы

  • Нет связанных вопросов^_^