ruby-on-rails - gem 的基本/主目录

标签 ruby-on-rails ruby rubygems bundler

作为 RSpec 的一部分,我需要引用一个包含在我所依赖的 gem 中的文件(称之为 gem foo)。我控制 gem foo,所以我可以根据需要对其进行更改。

Gem 'foo' 包含一个我需要在 rspec 规范中引用的文件。 是否有相当稳定的 RubyGem 或 Bundler API 来确定“foo”基目录?

假设我的 Gemfile 中已经需要“foo”: 在 Gemfile 中:

gem 'foo'

我想做这样的事情(在 something_spec.rb 中):

filename = File.expand_path('examples/xml/result.xml', Gem.gem_base_path('foo'))

什么是 gem_base_path API 调用?

最佳答案

我建议在您的 gem 中创建一个函数来执行此操作:

module Foo
  class Configuration
    def self.result_xml_path
      File.realpath("../examples/xml/result.xml")
    end
  end
end

然后您可以在规范中执行以下操作:

filename = Foo::Configuration.result_xml_path

这要安全得多,因为您是从 gem 获取所有信息的。它看起来也更干净。

关于ruby-on-rails - gem 的基本/主目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5070322/

相关文章:

javascript - 使用uglifier缩小rails中的min.js文件时出错

ruby - 在 Ruby 的控制台上显示时在对象上调用的方法

Ruby:在一行中重复 n 次方法

ruby - 是否可以在安装 gem 后生成 Rdoc?

ruby - 如何在代理后面 bundle 安装 git gem?

ruby-on-rails - 在 activeadmin 中自定义 csv 格式会禁用 csv 下载链接

ruby-on-rails - 我怎样才能 "bump"具有最新评论的帖子并且让没有评论的新帖子出现在 Rails 的顶部?

ruby-on-rails - 从 Rails 获取 authenticity_token

ruby - 每天早上 8 点到晚上 8 点,每隔 20 分钟执行一次 Cron 作业

ruby - Ruby 中的 Zlib 解压 .gz