【问题标题】:Ruby - Where to put resource files that a module in lib relies on?Ruby - 将 lib 中的模块依赖的资源文件放在哪里?
【发布时间】:2012-03-11 14:07:58
【问题描述】:

我正在尝试按照最佳实践来构建我的 ruby​​ 项目。我目前有这样的事情:

test_project/
   bin/
       test_project # My Executable
   lib/
       test_project/
           my_module.rb
       test_project.rb # Loads my_module.rb

我是根据在网上找到的建议设置的。

我的问题是我有一些资源文件,“resouce1.txt”和“resouce2.txt”。我的可执行文件需要打开文件“resource1.txt”。 my_module.rb 需要能够打开文件“resource2.txt”。在这个目录结构中我应该将这些计划文本资源文件放在哪里以及如何从相应的 ruby​​ 文件中打开它们(File.open)。

在此致谢,
科森

【问题讨论】:

    标签: ruby rubygems ruby-1.9.3


    【解决方案1】:

    由于/lib 与为您的 gem 提供支持的 Ruby 相关,所以我会将其放在您的 gem 中以它们的主题命名的顶级目录中。如果它们是包含物种列表的文件,我会称之为/species

    如果你有很多像/assets/species 这样的外部资产,你也可以使用Rails 的方式并将它放在/assets 文件夹中。无论哪种方式,我都不会倾向于将它们放入/lib

    【讨论】:

    • 您对如何使用 File.open 加载它们有什么建议吗?例如,我认为像 File.open "../../../assets/species" 这样的东西可能会有点难以管理。总的来说,我认为这是一个很好的建议,只是想知道是否有更好的方法来找出嵌套在 lib 下的 ruby​​ 文件的路径。
    • 我会将辅助方法添加到我的 gem 的顶级模块/类中,例如 gem_pathassets_pathload_asset("species/1.txt")
    【解决方案2】:

    我不认为这些有一个标准的地方,因为大多数情况下它取决于操作系统(/var/etc vs Program Files vs Application Bundle)。但最好的选择(我认为)是将它们放在层次结构的根目录中,将它们放在 lib/ 中,或者,如果它们确实是静态文本文件,则将它们放在你的脚本中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-22
      • 2020-09-16
      • 1970-01-01
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多