Где поместить Galleria (фреймворк галереи изображений jQuery) в Rails 3.1 Asset Pipeline? - PullRequest
12 голосов
/ 30 августа 2011

Я немного озадачен тем, где разместить jQuery-фреймворк, такой как Galleria в Rails 3.1 Новый Asset Pipeline ?

Я знаю, что технически это должно идти в /vendors/assets/javascripts , но , насколько я понимаю, папка Galleria с jQuery & themes хочет быть в корне (/galleria) живого сайта для корректной работы.

Кроме того, где мы можем разместить следующий скрипт, чтобы он появлялся только на страницах с галереей?

<script>
    $('#gallery').galleria({
        width:500,
        height:500
    });
</script>

Редактировать : Удивлен, что нет ответа!?!Может Galleria не так популярна?Это файлы, которые я пытаюсь загрузить.Они связаны, как это, хотя я мог бы легко перемещать их:

vendor/
  assets/
    javascripts/
      galleria-1.2.5.js
      galleria-1.2.5.min.js
    galleria/
      themes/
        classic/
          classic-loader.gif
          classic-map.png
          galleria.classic.css
          galleria.classic.js
          galleria.classic.min.js

я думал, Звездочки require_tree . загрузит все в app/assets, lib/assets и vendor/assets ?!

Ответы [ 3 ]

22 голосов
/ 20 сентября 2011

У меня была такая же проблема, и потребовалось некоторое время, чтобы начать работать.Первоначально, это работало бы хорошо на разработке, но когда мы перешли на производство, Galleria молча провалилась из-за имен файлов активов, теперь имеющих «отпечатки пальцев».Это также кажется проблемой с темами jQuery UI и многими другими такими сценариями.

Конечно, вы могли бы просто вернуться к старому способу выполнения вещей и бросить все в "public", но мы бы хотелинапример, преимущество автоматического слияния всех файлов css / js и выполнения действий по принципу рельсов.

Вот как у меня это работает:

vendor/
  assets/
    images/
      classic-loader.gif
      classic-map.gif
    javascripts/
      galleria-1.2.5.js
      galleria.classic.js
    stylesheets
      galleria.classic.css.scss

Переименуйте файл galleria.classic.css в galleria.classic.css.scss.Затем замените ссылки на изображения следующим образом (у меня их было два):

url("classic-loader.gif") становится image-url("classic-loader.gif")

ОБНОВЛЕНИЕ: Похоже, вам не нужно делать это вРельсы 3.1.1.Просто переименуйте файл в .css.scss, и rails автоматически выполнит предварительную обработку вызовов url ().

В вашем файле app/assets/javascripts/application.js убедитесь, что у вас есть строки

//= require galleria-1.2.5
//= require galleria.classic
//= require_tree .

В вашем файле app/assets/stylesheets/application.css убедитесь, что у вас есть строки

*= require galleria.classic
*= require_tree .

Наконец, в Galleria, похоже, встроена какая-то необычная нестандартная загрузка CSS. Это то, что мешало Galleria загружаться нанаш производственный сайт.Поскольку мы уже включили таблицу стилей, мы хотим отключить это поведение.Просто откройте galleria.classic.js (или файл Javascript темы Galleria) и замените строку:

css: 'galleria.classic.css',

на:

css: false,

Это скажет Galleria не пытаться загружать таблицу стилей.

Еще одна вещь - при попытке скомпилировать эти ресурсы я столкнулся с ошибкой в Rails 3.1.0 .Когда я запустил rake assets:precompile, я получил такие ошибки, как:

$ bundle exec rake assets:precompile
rake aborted!
classic-loader.gif isn't precompiled
  (in /vendor/assets/stylesheets/galleria.classic.css.scss)

Короче говоря, вам нужно установить эту строку в config/environments/production.rb:

config.assets.compile = true

Это не должно бытьнеобходимо после выпуска 3.1.1.

3 голосов
/ 07 марта 2012

Мне нравится предложение Арьена, хотя я думаю, что vendor/assets/libs более уместно. Вот мои настройки:

В config / application.rb

config.assets.enabled = true
config.assets.paths << "#{Rails.root}/vendor/assets/libs"

В приложении / assets / javascripts / application.js

//= require galleria/galleria-1.2.6.min.js

Для инициализации:

Galleria.loadTheme('assets/galleria/themes/classic/galleria.classic.min.js');
$('#gallery').galleria();

Обратите внимание, что путь к loadTheme() начинается с 'assets'.

Мне нравится эта настройка, потому что она сохраняет папку galleria в целости и сохранности. Кроме того, он объединяет galleria-1.2.6.min.js в моем основном js-файле (на один HTTP-запрос меньше).

2 голосов
/ 11 сентября 2011

Я тоже наткнулся на эту проблему. Разделить существующую библиотеку, чтобы она вписалась в текущую структуру javascripts / stylesheets, немного хлопотно. Для этого вы можете добавить дополнительный путь к файлу application.rb для загрузки ресурсов, например:

    # Enable the asset pipeline
    config.assets.enabled = true
    config.assets.paths << "#{Rails.root}/app/assets/libs"

Создайте папку 'libs' в app / assets, скопируйте библиотеку galleria в эту папку и добавьте ее в файл макета приложения:

    <%= javascript_include_tag 'galleria/galleria-1.2.4.min.js' %>
    <%= javascript_include_tag 'galleria/themes/classic/galleria.classic.min.js' %>

Вы также можете связать код галереи, запросив файлы js, но это ваше дело.

...