问题标签 [railtie]

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 投票
2 回答
2569 浏览

ruby-on-rails - 如何在我的测试中触发 Railtie 初始化程序?

我有自己的宝石,我的铁路看起来像……

我正在尝试对其进行测试,但在测试中,初始化程序永远不会被调用。而且我注意到我对另一个也有初始化程序的 gem 有一些依赖,它们也没有被调用。

你知道除了需要文件我应该做什么吗?

0 投票
1 回答
39 浏览

ruby-on-rails - Ruby On Rails 在主页上抛出错误 - railties

当我尝试我的页面时,即 localhost:3000/home - 它显示此错误。

在此处输入图像描述

这是控制台中抛出的错误:

我认为 有一些问题railties。但我不确定它是什么?

我的 routes.rb 的内容:

0 投票
1 回答
1372 浏览

ruby-on-rails - 控制 Rails 初始化程序加载顺序(可能需要新的 Rails 初始化挂钩)

我正在构建一个使用 OmniAuth 的 Rails 引擎。OmniAuth 需要向 Rails 中间件堆栈添加一些中间件,根据 OmniAuth,建议的方法是在初始化程序中执行此操作。我已经尝试过了,我成功地在 gem 中创建了一个初始化程序,它会在 Rails 应用程序启动时加载。现在,我正在尝试向我的 gem 添加一些配置选项,并且我希望 gem 用户能够在 gem 的初始化程序起作用之前创建另一个初始化程序来配置 gem。

我发现首先加载所有引擎中的任何初始化程序。然后接下来加载 Rails 应用程序中的初始化程序。我曾希望我能够以可以控制加载顺序的方式命名初始化程序,但是 Rails 应用程序初始化程序仍然在 gem 的初始化程序之后处理。这对我来说非常有意义,但它给我留下了初始化程序加载顺序问题。Rails 应用程序将最后运行,所以当它有机会配置 gem 时,gem 已经完成了它的工作。

我的下一个想法是after_initialize在引擎的 Railtie 中使用回调。在大多数情况下,这可能会起作用,但在这个特定的用例中它没有帮助。到after_initialize调用的时候,中间件堆栈被冻结并且无法更改(这使得它对于唯一目的是更改中间件堆栈的代码毫无用处)。

在这一点上,我只看到一种解决方法。Rails 应用程序必须在 application.rb 中配置 gem,以便在运行任何初始化程序之前配置 gem。

有人看到我缺少的东西吗?有没有办法让 gem 在初始化程序被处理之后(但在 Rails 开始完成启动过程之前)立即做一些工作?如果没有,Rails 似乎有另一个钩子会在处理完初始化程序后立即触发。

0 投票
1 回答
1435 浏览

ruby-on-rails - NameError:未初始化的常量 GemName::Rails::Railtie

我正在创建一个 gem 来封装应用程序的一大块功能。他们 gem 本质上运行 rake 任务,但是当我使用 运行任务时bundle exec rake:assets:precompile,出现以下错误

railtie相关模块的代码是:

任何想法为什么我会收到此错误?

0 投票
1 回答
208 浏览

ruby-on-rails - 为什么现代 Rails 插件 gem 更喜欢配置初始化器而不是 Railtie 的配置钩子?

我曾经看到过很多可以在application.rb文件或环境文件之一中配置它们的 gem,因为它们与 Railtie 的配置助手挂钩。但是现在似乎我使用的每个 gem 都通过一个带有自定义配置实现的初始化文件来处理配置(例如 Devise's Devise.setup do |config|)。

我怀疑其中一个原因是我使用的 gem 恰好有很多配置选项,所以使用初始化程序是有意义的。但是还有其他不使用 Railtie 的理由config吗?

假设我正在构建一个 gem,我只想公开一些用户配置选项。使用带有自定义设置逻辑的初始化文件与使用 Railties 有什么优缺点?

0 投票
3 回答
1564 浏览

ruby-on-rails - 预览非开发层上的邮件程序

我在spec/mailer/previews. 在development我可以查看下的所有预览/rails/mailers/。但是,默认情况下,此功能在其他环境中不存在。

我想在staging环境中启用它,并从这里的这篇文章中排队。

我做了以下更改 -

配置/路由.rb

配置/环境/staging.rb

但是在登台时,我在尝试加载/rails/mailers页面时收到以下错误 -

奇怪的是……那个文件确实存在。当我检查暂存文件的自动加载路径时,该文件肯定在数组/列表中。

对这里可能发生的事情有什么想法,或者我应该如何公开那个端点?

谢谢!

0 投票
0 回答
21 浏览

ruby-on-rails - 如何用我自己的交换 Rails 组件?如何交换 Rails 组件进出?

据我了解,定义 Rails 组件/模块的是它从 Rails::Railtie 子类化一个自己的 Railtie 类(后者是一个接口,无法实例化。)

如何加载组件/模块以及如何将 ActiveRecord 与我自己的 ORM 模块交换?

你的,

冯·斯波茨

0 投票
1 回答
56 浏览

ruby-on-rails - 从其他类访问 Railtie 初始化程序中的变量

我有一个具有以下 Railtie 类的 gem。我正在尝试从外部访问 my_config 变量,即同一个 gem 中的另一个 ruby​​ 类。我怎样才能访问它?

0 投票
0 回答
160 浏览

ruby-on-rails - Rails 3.2.25 升级到 4.0.0 - 所有活动记录查询上的“未初始化常量 ActiveRecord”

我正在为内置于 rails 2.3.18 并运行 ruby​​ 1.9.3 的 Web 应用程序执行边缘 ruby​​ 和 rails 更新。

我一直在逐步更新 Rails 版本并修复中断,事情一直在稳步向前发展。我目前已经使用 ruby​​ 2.1 和 rails 3.2.xx 并且已经推送到 rails 4.0.0

自 4.0.0 更新以来,我已经处理了很多中断和错误,现在可以让服务器开始使用rails s,但我现在遇到了一个新错误。

我在网上找不到关于这个错误的任何信息,所以我希望我能在这里有更好的运气。提前谢谢。

这是我的控制器中触发此错误的行。请记住,这不是我的代码。我正在更新一个 8 岁的系统。

这是触发错误的特定行,但无论是任何活动记录调用,我都会收到此错误。即使在 Rails 控制台中简单地调用模型也会让我遇到同样的错误。

像在 Rails 控制台中调用这样的事情User让我遇到同样的错误。

我已经尝试过:

这仍然让我遇到同样的错误。我还卸载了所有其他版本的 activerecord。

有一个非常短的堆栈跟踪让我相信 railties 库没有加载。或者那个库的路径可能存在问题。

这是我的 application.rb 文件顶部的屏幕截图

application.rb 顶部截图

0 投票
1 回答
1336 浏览

ruby-on-rails - 所有测试都抛出 TypeError:没有将 nil 隐式转换为 String

更新 20180209:我创建了一个新的虚拟应用程序,其中包含初始 Rails 5.1.4 安装(包括 minitest 5.11.3),并且测试完成没有问题。将继续对 gemfile 进行试验,看看我是否无法缩小世界上可能导致此问题的原因...

如果您有任何想法或建议,请告诉我!


我最近开始测试我的代码库的一个新部分,我发现了一个非常关键的问题。无论出于何种原因,现在每个测试都抛出标题错误。查看跟踪,由于某种原因,我的测试的引用名称/标题似乎导致了问题。不幸的是,返回并运行我知道正在通过的测试(尽管在早期的 gem 版本中)会产生相同的结果,如下面的 User 模型所示。

我已经尝试了所有我知道的方法,包括完全删除和重新安装 RVM、Rails 和 Ruby。我什至尝试过将 Minitest 版本控制到较早的版本,例如 10.5.3,但仍然没有运气。我花了一天的大部分时间试图解决这个问题。我无能为力,迫切需要帮助!虽然我已经学会了现在需要明确版本保护我所有的宝石的艰难方法;)

先感谢您!如果您需要我包含更多文件/片段,请告诉我。在我的日程安排允许的情况下,我会尽力回答任何问题,希望在 24 小时内。

返回的跟踪:

错误:UserTest#test_should_be_valid:TypeError:没有将 nil 隐式转换为 String

/home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/railties-5.1.4/lib/rails/test_unit/reporter.rb:70:in method': undefined methodtest_should_be_valid' for class Minitest::Result' (NameError) from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/railties-5.1.4/lib/rails/test_unit/reporter.rb:70:informat_rerun_snippet'来自/home/blake /.rvm/gems/ruby-2.4.1@land_app/gems/railties-5.1.4/lib/rails/test_unit/reporter.rb:23:in record' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:803:inblock in record' 来自 /home/blake/.rvm/gems/ ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:802:in each' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:802:inrecord' 来自 /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest- 5.11.3/lib/minitest.rb:334:in run_one_method' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:321:inblock (2 levels) in run' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/ minitest.rb:320:in each' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:320:inblock in run' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:360:inon_signal' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:347:inwith_info_handler' 来自 /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:319:in run' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/railties-5.1.4/lib/rails/test_unit/line_filtering.rb:9:inrun' 来自 /home/blake/.rvm/gems /ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:159:in block in __run' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:159:inmap' 来自 /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest -5.11.3/lib/minitest.rb:159:in __run' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:136:inrun' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:63 :in block in autorun' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/spring-2.0.2/lib/spring/application.rb:171:infork' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/spring-2.0.2/lib/spring/application.rb:171:in serve' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/spring-2.0.2/lib/spring/application.rb:141:inblock in run' from /home/ blake/.rvm/gems/ruby-2.4.1@land_app/gems/spring-2.0.2/lib/spring/application.rb:135:in loop' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/spring-2.0.2/lib/spring/application.rb:135:inrun' from /home/blake/.rvm/gems/ruby-2.4 .1@land_app/gems/spring-2.0.2/lib/spring/application/boot.rb:19:在<top (required)>' from /home/blake/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in需要'来自/home/blake/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in require' from -e:1:in'

这是来自一个相当标准的用户模型测试,之前没有出现过问题......

用户.rb

测试/user_test.rb

test_helper.rb

我目前正在运行

  • 红宝石 2.4.1
  • 导轨 5.1.4

我的宝石清单如下: