问题标签 [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 回答
164 浏览

ruby-on-rails - 在自定义 Rails 生成器中使用 class_name

我有一个看起来像这样的基本自定义生成器,它继承自 Rails 5.1 应用程序中的 Rails::Generators::NamedBase

我的模板文件名为 notification.rb.tt,它位于 ../templates 目录下。

模板如下所示:

但是,当我运行生成器时,创建的文件在文件中有 <%= class_name %> 而不是该方法调用的结果。如何让生成器像 erb 模板一样实际渲染?

0 投票
1 回答
113 浏览

ruby-on-rails-5 - 覆盖 Rails 生成器以将 date_select 更改为 date_field

我一直在尝试覆盖 rails 生成器(当您运行时rails generate scaffold)以生成日期类型 adate_field而不是date_select表单(时间和日期时间相同)。映射位于railties/lib/rails/generators/generated_attribute.rb

def field_type @field_type ||= case type when :integer then :number_field when :float, :decimal then :text_field when :time then :time_select when :datetime, :timestamp then :datetime_select when :date then :date_select when :text then :text_area when :boolean then :check_box else :text_field end end

我不知道把更新的generated_attribute.rb文件放在哪里。我在rails应用程序中尝试过,但lib/generators/generated_attribute.rb没有lib/templates/generators/generated_attribute.rb效果。我还没有找到有关覆盖此文件以更改行为的任何其他信息。

提前致谢。使用导轨 5.2

0 投票
0 回答
253 浏览

ruby-on-rails - 当 gem 添加到 rails 引擎并加载到另一个应用程序中时,未初始化的常量 MetaTags

我目前正在构建一个rails引擎,在我的gemspec文件中我有这个gem meta-tags,我已经像这样添加了

保险.gemspec

我还添加了一个文件来将这个 gem 的初始化配置复制到我的主应用程序中,就像这样

在 lib/generators/insurance/install_generator.rb

在我的 main_application 中,当我运行时,会像这样创建一个 config/initializers/meta_tags.rb 文件rails g insurance:install

配置/初始化程序/meta_tags.rb

但是当我运行 rails s 时,我得到错误config/initializers/meta_tags.rb:2:in“:未初始化的常量 MetaTags (NameError)”。

那么我应该如何在我的 Rails 引擎中添加一个 gem 并能够从我的 rails 引擎或我的主应用程序调用常量。

任何建议表示赞赏

0 投票
1 回答
65 浏览

ruby-on-rails - 虚荣宝石:奇怪的铁轨会产生虚荣错误

我正在尝试将 Vanity gem 引入到一个项目中,并且在我尝试运行生成器之前一切都很顺利。这是电话:

这是输出:

找不到生成器“虚荣”。也许你的意思是“虚荣”、“任务”或“邮件”运行rails generate --help更多选项。

请注意,它找不到“虚荣”,然后暗示虚荣。呜?然后我花了一点时间来验证生成器是否确实存在:

并得到:

虚荣心:
虚荣心
虚荣心:意见

我正在使用 Spring,所以我用spring stop.

我还应该注意,我尝试了很多事情,例如:

此外,我实际上正在使用捆绑器,所以我bundle exec在命令开头使用和不使用所有这些东西。

我想知道这个错误是否真的掩盖了我本地设置中的问题,但我已经仔细观察并确信虚荣的安装和设置是正确的。

版本信息:

编辑:附加信息:我走上了停止 Spring 服务器、捆绑更新然后尝试生成器的路径——没有任何改变。我什至尝试过进入实际的生成器并在那里调试。在加载文件时,它从不执行任何方法。

0 投票
0 回答
62 浏览

ruby-on-rails - 如何在现有资源周围生成脚手架而不丢失现有代码/文件/列?

我没有从头开始一个新的 Rails 应用程序,而是从一个模板构建它(它会自动生成用户表,其中已经设置了各种东西 - 登录/密码重置,还有一些其他的东西)。

如果我想达到rails g scaffold User ..但不覆盖已经设置的任何内容(通过模板)的效果,有没有简单的方法可以做到这一点?也就是说,rails g scaffold User应该只添加到代码/文件/列,而不是覆盖任何东西。

有什么简单的方法可以做到这一点?

0 投票
1 回答
73 浏览

ruby-on-rails - 如何将我的 rails 自定义生成器连接到模型一?

目前,我创建了一个独立的生成器。当我运行时rails g query,它可以正常工作并很好地创建我的文件。

这里的代码:

现在,我想在人们运行时运行生成器,rails g model但我无法实现。我尝试覆盖生成器模型类并使用 ahook_for来调用它,但它不起作用。这里的代码:

我希望你能帮助我。谢谢!

0 投票
1 回答
78 浏览

ruby-on-rails - Ruby on rails 6.1.2 从索引页面创建帖子

我刚开始学习 Rails,需要一些帮助。

我执行了命令rails g scaffold posts title:string description:string,并生成了一些页面和一个控制器。

页面localhost:3000/posts显示我所有的帖子。

页面localhost:3000/posts/new给我创建新帖子的表格。

如何从localhost:3000/posts页面创建帖子?我的代码在这里 - github

十分感谢!

0 投票
0 回答
33 浏览

ruby-on-rails - Rails.configuration.generators.active_record 在测试期间是如何设置的?

我正在对我多年前写的名为validation_auditor的 gem 进行现代化改造。它有一个创建迁移的 Rails 生成器。它现在与最新的 Rails 配合得很好,但我在测试它时遇到了麻烦。我有一个非常简单的测试:

当我运行它时,它会抛出这个错误:

错误发生在这一行

这是安装程序的一部分。

当我在 Rails 项目中运行它时,那条线工作正常,我只是无法让它在测试中工作。

行的灵感来自 Thoughtbot 的 Clearance,它确实成功地测试了它的生成器:https ://github.com/thoughtbot/clearance/blob/e653b303e152c8af31a5c30c1b9b13a3e36b3716/spec/generators/clearance/install/install_generator_spec.rb#L9

任何想法 Rails 这样做的方式是什么?我试图了解 Clearance 是如何工作的,但是有很多代码要经过,我还没有设法正确理解,我想知道即使 Clearance 是否正确地做到了。