13

Вопрос по ruby-on-rails – config.assets.precompile без добавления ресурсов vendor / gem

У меня возникли проблемы с компиляцией вендорных ресурсов в качестве корневых файлов.

Я хочу, чтобы следующие активы были доступны автономно (не упакованы вместе с другими активами_:

vendor/gems/neo-viz/app/assets/stylesheets/neo-viz.css.scss
vendor/gems/neo-viz/app/assets/javascripts/neo-viz.js.coffee
vendor/gems/neo-viz/app/assets/javascripts/lib/jQuery/jquery-1.6.1.min.js
vendor/gems/neo-viz/app/assets/javascripts/lib/arbor/arbor.js

Со следующей строкой:

config.assets.precompile += %w( jquery-1.6.1.min.js arbor.js neo-viz.js neo-viz.css )

Только CSS-файл предварительно скомпилирован и доступен. Зачем?

Также, увидев этот вопрос (Включение ресурсов в подкаталоги с помощью config.assets.precompile в Rails ), Я старался:

config.assets.precompile += %w( jquery-1.6.1.min.js arbor.js neo-viz.js neo-viz.css lib/arbor/arbor.js arbor/arbor.js lib/jQuery/jquery-1.6.1.min.js jQuery/jquery-1.6.1.min.js   )

Но это не имело значения. Идеи?

  • Error: User Rate Limit ExceededacceptedError: User Rate Limit Exceeded

    от
  • 18

    По умолчанию Rails просматривает только 3 локации:

    app/assets, lib/assets или жеvendor/assets, Sprockets ищет ресурсы JS в подкаталогеjavascripts, Например.

    app/assets/javascripts/arbor.js
    lib/assets/javascripts/arbor.js
    vendor/assets/javascripts/arbor.js
    

    Если вы хотите увидеть, где ищет Rails, вы можете использовать это в консоли:Rails.application.config.assets.paths

    Что вы можете сделать, это добавить свой собственный путь к конвейеру:

     # @file: config/application.rb
     config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts")
    

    Затем создайте манифест, куда вы включаете ваши файлы JS:

    # @file: /vendor/gems/neo-viz/app/assets/javascripts/neo-viz.js
    //= require lib/jQuery/jquery-1.6.1.min
    //= require lib/arbor/arbor
    //= require neo-viz
    

    Наконец добавьте свой манифест:

    config.assets.precompile += %w( neo-viz.js )'
    

    Если вы все еще хотите добавить их по отдельности, а я не вижу в этом смысла, почему бы не включить их в манифест, тогда вам придется добавитьall возможный префикс пути, чтобы Rails знал, где искать:

     # @file: config/application.rb
     config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "stylesheets")
     config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts")
     config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts", "lib", "jQuery")
     config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts", "lib", "arbor")
    

    Затем вы можете добавить их следующим образом, поскольку ресурсы вне манифеста должны быть добавлены в массив прекомпиляции:

    config.assets.precompile += %w( jquery-1.6.1.min.js arbor.js neo-viz.js neo-viz.css )
    

    Источник:2.1 Организация активов