Глифы не отображаются должным образом при установке Ubuntu Rails 4.1

На моей машине разработки:

Windows 8.1
Ruby 2.0
Rails 4.1
Bootstrap 3

На моей производственной машине:

Ubuntu 12.4
Ruby 2.1.1
Rails 4.1
Bootstrap 3

Вот мой код:

<td>
  <%= link_to my_model, class: 'btn btn-info' do %>
    <span class="glyphicon glyphicon-search"></span>
  <% end %>
</td>
<td>
  <%= link_to [:edit, my_model], class: 'btn btn-warning' do %>
    <span class="glyphicon glyphicon-pencil"></span>
  <% end %>
</td>
<td>
  <%= link_to my_model, method: :delete, data: { confirm: 'Are you sure?' }, class: 'btn btn-danger' do %>
    <span class="glyphicon glyphicon-remove"></span>
  <% end %>
</td>

Глифы отлично отображаются на моем компьютере для разработки, но не на рабочем компьютере. Изображения прилагаются. Любые идеи?

Производственная машинаМашина разработки

Прекомпиляция:

Я забыл добавить, что я прекомпилирую следующим образом:

RAILS_ENV=production bundle exec rake assets:precompile

Осмотр элементов:

Вот что говорит firebug, когда я проверил эти элементы. Они одинаковые:

Противопожарная инспекция для производства:

<td>
  <a class="btn btn-info" href="/agents/1">
    <span class="glyphicon glyphicon-search"></span>
  </a>
</td>

Инспекция Firebug для разработки:

<td>
  <a class="btn btn-info" href="/agents/1">
    <span class="glyphicon glyphicon-search"></span>
  </a>
</td>   

Отвечать:

Похоже, я имел дело с известной проблемой Rails 4.1. Решение состоит в следующем:

  1. Имейте следующий набор в environments/production.rb:

    config.assets.compile = правда

  2. Предварительно скомпилируйте активы следующим образом:

    RAILS_ENV = активы rake exec производственного пакета: предварительная компиляция

Предварительная компиляция ресурсов предотвратит динамическую повторную компиляцию ресурсов. Я протестировал его, и теперь он работает на моем сервере Ubuntu 4.1.


person EastsideDev    schedule 02.07.2014    source источник
comment
ошибки в консоли разработчика?   -  person Mandeep    schedule 03.07.2014
comment
консоль разработчика? Проблема на рабочем сервере, а не в среде разработки.   -  person EastsideDev    schedule 03.07.2014
comment
да консоль разработчика! тот, в котором вы проверяете свои элементы в браузере, отличается от вашего терминала :)   -  person Mandeep    schedule 03.07.2014
comment
Вы говорите о консоли Rails, как в rails c RAILS_ENV=production, или о проверке элементов с помощью моего локального браузера?   -  person EastsideDev    schedule 03.07.2014
comment
консоль вашего браузера, где вы проверяете ошибки js, firebug или просто локальную консоль браузера, которую вы когда-либо использовали   -  person Mandeep    schedule 03.07.2014
comment
Да, я уже сделал это. Он не показывает никаких различий между этими элементами. Я редактирую свой вопрос, чтобы добавить эти данные.   -  person EastsideDev    schedule 03.07.2014


Ответы (1)


Это может быть вызвано рядом проблем:

--

Предварительная компиляция

Основной проблемой здесь скорее всего будет прекомпиляция:

По умолчанию Rails предполагает, что ресурсы были предварительно скомпилированы и будут использоваться вашим веб-сервером как статические ресурсы.

Предварительная компиляция ресурсов Rails — проклятие многих приложений, связанных с Heroku (я знаю, что вы не используете Herou), так как многие люди не учитывают свои требования к предварительной компиляции при разработке своего конвейера ресурсов.

Проблема, с которой вы, вероятно, сталкиваетесь, заключается в том, что ваши активы либо не предварительно скомпилированы, либо ссылаются на свои «динамические» имена файлов, а не на «статические».

Я бы лично предварительно скомпилировал ваши активы перед развертыванием в рабочей среде:

$ rake assets:precompile RAILS_ENV=production

-

Отпечатки пальцев

Когда вы предварительно компилируете ресурсы, Rails выполняет что-то под названием fingerprinting - в основном там, где Rails добавит хэш в конец имени файла

Другая проблема для многих людей заключается в том, что они будут ссылаться на «статическое» имя файла, используя что-то вроде следующего:

#app/assets/stylesheets/application.css
.style {
   background: url("your_image.png");
}

Проблема здесь в том, что хотя это будет работать в разработке (где активы ссылаются статически), у вас возникнут проблемы в производстве. Чтобы исправить это, вам потребуется использовать некоторые из препроцессоров CSS Rails (SASS):

#app/assets/stylesheets/application.css
.style {
   background: asset_url("your_image.png");
}

--

Исправить

Что касается непосредственно вашей проблемы, я бы сказал, что основная проблема заключается в том, что вы, вероятно, неправильно ссылаетесь на свои файлы CSS, возможно, с неправильными путями.

Я бы сначала посмотрел на developer console в вашем браузере - это, скорее всего, скажет вам, что у вас нет различных доступных файлов CSS, для которых вы затем сможете попробовать предварительно скомпилировать и динамически ссылаться на глифы, чтобы увидеть, будет ли это работать

person Richard Peck    schedule 03.07.2014
comment
Я предварительно компилирую активы (пожалуйста, смотрите мое редактирование), так что это не проблема. Я рассмотрю отпечатки пальцев и отчитаюсь - person EastsideDev; 03.07.2014
comment
Смотрите полный ответ в редактировании моего вопроса. Необходима предварительная компиляция, и чтение ссылок, на которые вы мне указали, помогло мне найти ответ (хотя и специфичный для Rails 4.1, чтобы обойти известную проблему) - person EastsideDev; 11.07.2014