【问题标题】:Requiring a gem's assets from another gem从另一个 gem 请求一个 gem 的资产
【发布时间】:2014-02-18 19:50:46
【问题描述】:

我正在创建一个 gem,它将包含基础导轨 gem 以及一些在我的应用程序中使用的公共变量。我在vendor/assets/stylesheets/foundation.scss 创建了一个样式表。我从我的应用程序中加载这个

宝石文件

gem 'foobar-foundation-rails', path: '...'

app/assets/stylesheets/application.css

//= require foundation

这是一个很好的起点,但我如何在这个文件中包含foundation-rails gem 的样式表?我不确定如何引用另一个 gem 的资产

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 gem sprockets


    【解决方案1】:

    我认为最好的方法是将 require 语句的责任放在 Rails 应用程序的 javascripts 文件中。这很可能不是您想要隐藏在 gem 中的功能,因为它隐藏了正在发生的事情。

    然后确保在基础导轨需要之前需要 gem 的 css 文件。但是,您应该在 gem 的 gemspec 文件中添加依赖项要求,以确保安装 gem 时 bundler 会安装foundation-rails gem。

    此外,您可能必须为 gem 样式表“命名空间”以避免命名空间冲突。

    vendor/assets/stylesheets/foobar_foundation_rails/foundation.css
    

    这会将您的样式表文件中的要求更改为

    require 'foobar_foundation_rails/foundation.scss'
    

    最后,gem 的命名决定了 gem 是如何被需要的。当您使用破折号时,Rails 预计需要一些东西,因此您的 gem 的目录结构将遵循

    lib/foobar/foundation/rails
    

    与命名 foobar_foundation_rails 的下划线相反

    lib/foobar_foundation_rails
    

    除非您要为基础导轨 gem 构建一个“扩展”(需要将其称为基础导轨 foobar),否则您可能希望使用下划线语法来避免一些需要头痛的问题。设计 gem 是扩展 gem 的一个很好的例子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多