问题标签 [rails-generators]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
955 浏览

ruby-on-rails - 文件末尾的 Rails 生成器`inject_into_file`

有没有办法使用生成器将某些内容附加到文件中inject_into_file?它必须得到一个:before:after参数,但我应该传递什么来附加一些东西?

0 投票
1 回答
53 浏览

ruby-on-rails - Rails generate 不适用于 Gem 的开发

我现在正在构建一个小型 Gem,我希望能够将 Rails G 用于某些事情,但每次我这样做时,我都会得到相同的(长)响应

我认为尽管在构建 gem 时实际上并没有在 rails 环境中工作,但仍然可以使用 Rails G?

这是回应:

0 投票
1 回答
810 浏览

ruby-on-rails - 如何编写一个覆盖默认脚手架 javascript 文件的 rails 生成器?

背景:

  • 目前正在写一个gem
  • 它的特点之一是在rails generate my_gem_name:install运行时,它(应该)覆盖默认的 javascript 脚手架生成的文件(由 生成rails generate scaffold some_model_name):

    • app/assets/javascripts/some_model_name.coffee

      • 从:

        /li>
      • 到:

        /li>

问题:

  • 如何编写上述 Rails 生成器(从上面),它将覆盖由rails generate scaffold some_model_name.
  • 请注意,所需的 javascript 文件(如上所示)具有动态内容;那{model: 'SomeModelName'}应该与正在生成的模型名称正确更改和匹配。

尝试:

  • 我意识到有两个步骤可以解决这个问题:

    • 只是能够覆盖脚手架生成的 javascript 文件

    • 然后,做一些事情,使所述生成的 javascript 文件的内容具有“动态”内容。

  • 第一步

    • 尝试编写一个生成器,将我的模板文件复制到 Rails 的AssetsGenerator模板中,最终(希望)覆盖它。

      • 我暂时使用路径lib/templates/coffee-rails/assets/javascript.coffee来测试它,因为默认javascript_enginecoffee. 可能这应该取决于--javascript_engine),但似乎无法使其工作。我从这个LINK得到了这条路径,然后通过引用THIS

        似乎模式正在流动:lib/templates/gem_name/generator_name/template_file_name.rb

      • 从这个LINK,我也尝试使用路径(但没有用):

        • lib/templates/rails/assets/javascript.coffee
        • lib/templates/rails/assets/coffee/javascript.coffee
    • 第二步:到目前为止还没有尝试,因为我想先做上面的第一步

我上面的所有尝试都不起作用:即在两者rails generate my_gem_name:install都运行之后,然后运行rails generate scaffold some_model_name仍然会产生原始的默认 javascript 文件,而不是预期的console.log('JUST TESTING!!!!!!!')内容(如上所述)

0 投票
0 回答
93 浏览

ruby-on-rails - 如何覆盖 Rails 的默认迁移生成器以添加一小部分功能?

我想在我创建的所有迁移中默认包含一行代码。(实际上,只是禁用某个 Rubocop 检查的评论)。

我可以在不重新实现默认功能的情况下使用继承来实现这一点rails g migration吗?

0 投票
1 回答
235 浏览

ruby-on-rails - 安装petergate返回错误`找不到生成器'petergate:安装'`

我不断收到此错误。全文如下:

我已经跑了bundle install。gem 已安装并在我的 gem 目录中。我知道它不应该有什么不同,但是 Devise 已经安装并且我的用户模型被称为user.rb.

奇怪的是,当我尝试复制问题时,通过创建一个新的应用程序并安装设计然后 petergate,生成工作。

我已经尝试卸载 petergate,将其从我的捆绑包中取出并重新放回,bundle/ bundle install/的每个组合bundle update,将其移动到 gemfile 的顶部,尝试rails generate而不是rails g,重新启动我的计算机,但似乎没有任何工作。

Gemfile的如下:

Gemfile.lock

有人对这可能是什么有任何想法吗?我在扯头发。

0 投票
0 回答
225 浏览

ruby-on-rails - Gem railsconfig/config 通过可安装的 rails 引擎捆绑到应用程序时未加载

我正在编写一个 rails 5.2 可安装引擎,用于将 rails 应用程序配置为面向服务的架构的一部分。

我一直在尝试使用引擎内部的Config Gem,但我不断收到以下错误

install_generator.rb:28:in 'create_database_yml': undefined method 'adapter' for nil:NilClass (NoMethodError)

这是因为我正在尝试构建一个生成器,该生成器根据通过 Config gem 插入到一个字符串中的值生成正确配置的 database.yml 文件,该字符串被复制到文件中。导致错误的方法如下,完整的生成器模块代码也在下面的要点中。

生成器.rb

我已将 gem 捆绑到一个 rails 项目中,当我运行生成器时,这就是我收到上面提到的错误的时候。

您可以在下面看到完整的堆栈跟踪。

当我打开 Rails 控制台并调用Settings, 对象时

Config...(这是作为gem 核心的对象的别名。)

Settings我在控制台中返回了一个有效对象。这让我知道该Settings对象在运行我的引擎的 rails 应用程序中可用。

然而,错误让我相信调用Settings返回一个有效的对象......然后调用.database返回零。然后我们得到那个著名的 rails 错误undefined method for nil:NilClass

我的 gem 的 settings.yml 文件格式正确,所以没有理由说这种语法不起作用,因为我几乎在每个项目中都使用 gem,所以我很清楚它的功能以及如何使用它。

这只会让我相信,由于某种原因,设置 gem 没有按应有的方式加载 .yml 文件。可能加载路径搞砸了,或者当引擎捆绑到应用程序中时配置 gem 在错误的时间加载。

任何有任何关于如何让这个宝石在引擎中正常工作的信息的人都将不胜感激。

这是完整堆栈跟踪的要点

错误的完整堆栈跟踪

0 投票
1 回答
144 浏览

ruby-on-rails - 如何将 class_name 选项传递给生成器?

我正在使用 Rails 的生成器在我的应用程序中生成模型之类的东西。

我的模型通常使用class_name关系选项。

是否可以从命令行生成模型并传递值class_name?我特别想避免在生成器运行后修改模型。

我希望存在的一个例子是:

然后生成的Book模型将如下所示:

0 投票
0 回答
417 浏览

ruby-on-rails - rails 上未定义的方法 `load_defaults' 生成迁移和 rails 控制台

运行时出现此错误:rails generate migration AddRoleToBuyer role:integer

错误:

应用程序和 rspec 测试运行没有问题,但迁移不起作用。

编辑:当我跑步时rails console也会发生这种情况。

0 投票
1 回答
100 浏览

ruby-on-rails - Rails 生成器不会在销毁时删除新创建的文件夹

我正在编写一个 Rails 生成器,它将文件/文件夹从我的 gem 的模板目录复制到应用程序的目录中。它在我运行时按预期工作,rails generate mygem:install但是当我尝试使用它来反转它时,rails destroy mygem:install它不会删除新创建的子文件夹。

模板文件夹

app 文件夹(生成后)

app 文件夹(销毁后)

期望的结果

我的 gem 的安装生成器

0 投票
0 回答
40 浏览

ruby-on-rails - 查看自定义 Rails 生成器中的更改

我想查看受影响的文件和/或在我的自定义 Rails 生成器中运行方法之前将进行的更改。我已经看了好几天的文档,开始认为这是不可能的。

在上面的示例中,我试图将模板目录的内容复制到目标应用程序中。

以下是我的 gem 中的“mytemplate”目录的内容,以提供一些背景信息。我希望在生成器copy_theme_files_to_app方法内部看到的是要生成/销毁的一组新路径,或者显示模板的 application.scss 文件与应用程序中的文件之间的潜在冲突。

这可能吗?