【问题标题】:Installing gems in a Rails "application template"在 Rails“应用程序模板”中安装 gems
【发布时间】:2019-07-14 15:27:36
【问题描述】:

我已经构建了一个 Rails“应用程序模板”来生成一个带有一些常用 gem 和预安装配置的 Rails 应用程序。该模板调用了一些需要安装 gem 才能工作的生成器,这给我在一台除了 bundlerrails 之外没有安装任何 gem 的新机器上运行它时造成了问题。例如,尝试生成模型会失败,因为它需要 sqlite3,它在 Gemfile 中但尚未安装。

我尝试通过将生成器放在after_bundle 块中或在调用它们之前调用run "bundle install" 来解决这个问题。使用其中任何一种策略,我都会收到以下奇怪的错误:

加载“sqlite3”Active Record 适配器时出错。缺少它所依赖的宝石?无法激活 sqlite3 (~> 1.3.6),已经激活 sqlite3-1.4.0。确保将所有依赖项添加到 Gemfile。 (加载错误)

使生成的 Gemfile 中的 gem 可供模板使用的正确方法是什么?

Here is the template.

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    确保使用“bundle exec”,以便根据您的 Gemfile 加载正确的 gem。

    bundle exec rails g model MyModel
    

    【讨论】:

    • 使用 Rails 的 generator DSL 和其他 command DSLs 从模板(即 Ruby 代码)中调用命令,因此无法调用 bundler exec
    【解决方案2】:

    您可以使用run 命令为您的模板执行此操作。例如,如果您正在安装和运行 Rubocop,您可以:

    gem "rubocop"
    gem "rubocop-rails"
    
    run "bundle install"
    run "bundle exec rubocop -A"
    run "bundle exec rubocop --auto-gen-config"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 2019-12-16
      • 2018-02-01
      相关资源
      最近更新 更多