如何将一个宝石的资产包含在另一个宝石中?

2023-12-22

我正在构建一个 gem - Rails 引擎 - 让我们称之为它my_new_gem- 以及里面my_new_gem我正在尝试包含来自另一个 gem 的 JavaScript 资产 - 让我们称之为它the_other_gem.

In the gemspec for my_new_gem我已经包括了the_other_gem using add_dependency:

Gem::Specification.new do |s|
  s.name        = 'my_new_gem'
  s.version     = '0.0.1'
  s.date        = '2019-11-12'
  ...

  s.add_dependency 'the_other_gem'
end

然后在app/assets/javascripts/my_gem.js in my_new_gem我需要 JSthe_other_gem标准方式:

// Trying to require a JS file from another gem in my gem here
//= require the_other_gem

当我启动一个测试 Rails 应用程序时,其中包含我的 gemgemfile with gem 'my_new_gem'我得到一个Sprockets::FileNotFound尝试在浏览器中加载任何页面时出错:

couldn't find file 'the_other_gem' with type 'application/javascript'
Checked in these paths: 
  /Users/me/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/babel-source-5.8.35/lib
  /Users/me/Projects/my_project/app/assets/config
  /Users/me/Projects/my_project/app/assets/images
  ...

当我扫描上述所有路径时,该应用程序是NOT包括来自的任何供应商或资产路径the_other_gem在该列表中,就像我所期望的那样。

尽管如果 JS 的路径在the_other_gem没有显示在我的 Rails 应用程序资源路径中,找不到 JS 文件,我不明白WHY该路径未包含在内。

如果我包括the_other_gem直接在我的 Rails 应用程序中使用gem 'the_other_gem'并且还包括//= require the_other_gem在 Rails 应用程序中application.js然后一切都会加载,Sprockets 会成功找到路径the_other_gem assets.

虽然这可行,但我不想要求人们将 gem 直接包含在他们自己的 Rails 应用程序中,因为我认为我可以告诉my_new_gem自动将其包含在引擎盖下。

所以谜题是,我怎样才能得到my_new_gem在最终的 Rails 应用程序中包含正确的路径,以便来自的 javascript 文件the_other_gem会正确加载吗?我觉得我错过了一些非常明显的东西......非常感谢!


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将一个宝石的资产包含在另一个宝石中? 的相关文章

随机推荐

  • 解压缩非常大的序列化对象并管理内存

    我有一个对象 其中包含大量用于报告的数据 为了将该对象从服务器发送到客户端 我首先在内存流中序列化该对象 然后使用 NET 的 Gzip 流对其进行压缩 然后 我将压缩对象作为 byte 发送到客户端 问题出在某些客户端上 当它们获取 by
  • 强制我的 heroku 应用程序使用 SSL (https)

    我有一个节点应用程序在 Heroku 上成功运行 我购买了加急 SSL 证书 一切正常 我访问 https 并得到一个完整的 绿色条 证明该网站正在通过 https 提供服务 然而 非 SSL 标准 http 仍然可用 如何强制应用程序通过
  • 使用 VS2012 RC 时,如果在 main() 退出后调用 std::thread::join() 则会挂起

    如果在 Ubuntu 12 04 上使用 Clang 3 2 或 GCC 4 7 编译 以下示例会成功运行 即不会挂起 但如果使用 VS11 Beta 或 VS2012 RC 编译 则会挂起 include
  • 如何处理加载 iframe 时出现的错误?

    我有一个其他网站可以包含这些内容 以便他们的用户可以POST返回我的网站的表格 我想优雅地处理我的网站关闭或我的服务器无法提供服务的情况内容 即响应超时或 4xx 或 5xx 错误 我尝试添加一个onError to the 对象 但这似乎
  • 如何放弃 LuaJ 协程 LuaThread?

    我正在尝试一种游戏机制 玩家可以在游戏计算机上运行脚本 脚本执行在游戏级别上将受到资源限制 每次更新只能执行一定数量的指令 以下概念验证演示了基本级别的沙箱和任意用户代码的限制 它成功运行了约 250 条精心设计的 用户输入 指令 然后丢弃
  • 清除网站数据相当于 Javascript 吗?

    我希望在 Javascript 函数中具有与 清除站点数据 相同的行为 因为我的 Angular 应用程序 升级 Angular 后 似乎在不清除站点数据的情况下行为不当 而且我不希望客户被迫自己清除站点数据 如果不可能清理所有内容 是否至
  • PHP MySQL 选择随机行

    我在随机选择 6 个朋友时遇到问题 这是我到目前为止收到的查询 result num rows SELECT FROM friends WHERE member id SESSION userid if result gt 6 f num
  • 远程服务器返回错误 (403) 禁止

    我在下载文件时遇到问题 链接如下 http vsbg023 cda pl apple 13801451161599 mp4 st zFHkNA18rmxan4AvOQWRmw e 1431286721 这只是一个例子 一旦 WebClien
  • 无效的匿名类型成员声明符

    我对以下代码有问题 根据这个 MSDN 论坛帖子 https social msdn microsoft com Forums en US 3b13432a 861e 45f0 8c25 4d54622fbfb4 linq group an
  • angular-cli 新项目中的 webpack.config.js 在哪里?

    我正在研究 webpack 和 Angular cli 尽管 Angular cli 应该使用 webpack 但我看不到任何webpack config js当我使用以下命令创建新项目时的文件ng new 有谁知道这在 Angular C
  • ggplot2 中有没有内置的方法可以进行对数色标?

    以下是分箱密度图的示例 library ggplot2 n lt 1e5 df lt data frame x rexp n y rexp n p lt ggplot df aes x x y y stat binhex print p 调
  • 如何在 ASP.NET MVC 4 中忽略特定视图文件夹或特定 cshtml 文件的路由

    我想在浏览 Views 文件夹中的特定页面时忽略路由 但我尝试使用以下方法未成功 routes RouteExistingFiles false routes IgnoreRoute Views NoMove specificPage cs
  • 您能详细介绍一下 VS 2010 中的具体属性吗?

    我知道您可以进入每个属性 也可以不进入每个属性 但我真的很希望能够进入特定的属性 而不是其余的 这可能吗 我也知道我可以使用键盘命令 但我问是否有更永久的解决方案 我有很多属性 并且我的 setter 做了重要的事情 所以跳过它们是愚蠢的
  • 何时使用递归互斥体?

    我了解递归互斥体允许互斥体被锁定多次而不会陷入死锁 并且应该解锁相同的次数 但在什么特定情况下需要使用递归互斥锁呢 我正在寻找设计 代码级别的情况 例如 当您有递归调用它的函数 并且您希望同步访问它时 void foo mutex acqu
  • EnumProcessModules 在 32 位 win7 上失败并出现错误 299

    我的代码在win7 32位上运行 但是当我使用EnumProcessModules 它返回 false 并且 getlasterror 返回错误代码 299 这声明该程序是 32 位的 该语句不能在 64 位系统上运行 我想知道为什么会发生
  • 新标签页中的 javascript window.location

    我通过以下方式将用户转移到某个网址window location但此网址会在浏览器的同一选项卡中打开 我希望它在新选项卡中打开 我可以使用 window location 这样做吗 还有其他方法可以执行此操作吗 window open ht
  • guava:将列表转换为以索引为键的映射

    在我的应用程序中 我有一个列表名称 我希望根据索引值将其转换为地图 例如 List
  • android:从模拟器中删除多点触摸

    今天我做了以下一组更新 将我的 Android Studio 从 2 0 预览版 4 更新为2 0 preview 5 将我的 Android SDK 工具更新为25 0 2 rc3 将我的 Android 6 0 Google API I
  • Knockout.Js 无法检测以编程方式更改的复选框状态

    我有一个简单的复选框 其值通过我正在编写的一些基础设施进行调整 以便在 localStorage 中保留状态 我知道这通常是通过设置 viewModel 来完成的 但是基础设施不知道任何淘汰绑定 也无法访问它们 我不认为这会是一个问题 因为
  • 如何将一个宝石的资产包含在另一个宝石中?

    我正在构建一个 gem Rails 引擎 让我们称之为它my new gem 以及里面my new gem我正在尝试包含来自另一个 gem 的 JavaScript 资产 让我们称之为它the other gem In the gemspe