问题标签 [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.
ruby-on-rails - 如何在我的测试中触发 Railtie 初始化程序?
我有自己的宝石,我的铁路看起来像……
我正在尝试对其进行测试,但在测试中,初始化程序永远不会被调用。而且我注意到我对另一个也有初始化程序的 gem 有一些依赖,它们也没有被调用。
你知道除了需要文件我应该做什么吗?
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 似乎有另一个钩子会在处理完初始化程序后立即触发。
ruby-on-rails - NameError:未初始化的常量 GemName::Rails::Railtie
我正在创建一个 gem 来封装应用程序的一大块功能。他们 gem 本质上运行 rake 任务,但是当我使用 运行任务时bundle exec rake:assets:precompile
,出现以下错误
railtie相关模块的代码是:
任何想法为什么我会收到此错误?
ruby-on-rails - 为什么现代 Rails 插件 gem 更喜欢配置初始化器而不是 Railtie 的配置钩子?
我曾经看到过很多可以在application.rb
文件或环境文件之一中配置它们的 gem,因为它们与 Railtie 的配置助手挂钩。但是现在似乎我使用的每个 gem 都通过一个带有自定义配置实现的初始化文件来处理配置(例如 Devise's Devise.setup do |config|
)。
我怀疑其中一个原因是我使用的 gem 恰好有很多配置选项,所以使用初始化程序是有意义的。但是还有其他不使用 Railtie 的理由config
吗?
假设我正在构建一个 gem,我只想公开一些用户配置选项。使用带有自定义设置逻辑的初始化文件与使用 Railties 有什么优缺点?
ruby-on-rails - 预览非开发层上的邮件程序
我在spec/mailer/previews
. 在development
我可以查看下的所有预览/rails/mailers/
。但是,默认情况下,此功能在其他环境中不存在。
我想在staging
环境中启用它,并从这里的这篇文章中排队。
我做了以下更改 -
配置/路由.rb
配置/环境/staging.rb
但是在登台时,我在尝试加载/rails/mailers
页面时收到以下错误 -
奇怪的是……那个文件确实存在。当我检查暂存文件的自动加载路径时,该文件肯定在数组/列表中。
对这里可能发生的事情有什么想法,或者我应该如何公开那个端点?
谢谢!
ruby-on-rails - 如何用我自己的交换 Rails 组件?如何交换 Rails 组件进出?
据我了解,定义 Rails 组件/模块的是它从 Rails::Railtie 子类化一个自己的 Railtie 类(后者是一个接口,无法实例化。)
如何加载组件/模块以及如何将 ActiveRecord 与我自己的 ORM 模块交换?
你的,
冯·斯波茨
ruby-on-rails - 从其他类访问 Railtie 初始化程序中的变量
我有一个具有以下 Railtie 类的 gem。我正在尝试从外部访问 my_config 变量,即同一个 gem 中的另一个 ruby 类。我怎样才能访问它?
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 文件顶部的屏幕截图
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 method
test_should_be_valid' for classMinitest::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:in
format_rerun_snippet'来自/home/blake /.rvm/gems/ruby-2.4.1@land_app/gems/railties-5.1.4/lib/rails/test_unit/reporter.rb:23:inrecord' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:803:in
block in record' 来自 /home/blake/.rvm/gems/ ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:802:ineach' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:802:in
record' 来自 /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest- 5.11.3/lib/minitest.rb:334:inrun_one_method' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:321:in
block (2 levels) in run' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/ minitest.rb:320:ineach' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:320:in
block 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:in
with_info_handler' 来自 /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:319:inrun' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/railties-5.1.4/lib/rails/test_unit/line_filtering.rb:9:in
run' 来自 /home/blake/.rvm/gems /ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:159:inblock in __run' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:159:in
map' 来自 /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:in
run' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/minitest-5.11.3/lib/minitest.rb:63 :inblock in autorun' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/spring-2.0.2/lib/spring/application.rb:171:in
fork' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/spring-2.0.2/lib/spring/application.rb:171:inserve' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/spring-2.0.2/lib/spring/application.rb:141:in
block in run' from /home/ blake/.rvm/gems/ruby-2.4.1@land_app/gems/spring-2.0.2/lib/spring/application.rb:135:inloop' from /home/blake/.rvm/gems/ruby-2.4.1@land_app/gems/spring-2.0.2/lib/spring/application.rb:135:in
run' 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:inrequire' from -e:1:in
'
这是来自一个相当标准的用户模型测试,之前没有出现过问题......
用户.rb
测试/user_test.rb
test_helper.rb
我目前正在运行
- 红宝石 2.4.1
- 导轨 5.1.4
我的宝石清单如下: