Rails 4 在初始化器中使用应用程序助手

2023-12-02

是否可以在应用程序内部包含/使用应用程序帮助器方法config/initializers/browser_blocker.rb?

我正在使用浏览器宝石检测并阻止较旧的非现代浏览器。

Rails.configuration.middleware.use Browser::Middleware do
    include ApplicationHelper
    redirect_to :controller => 'error', :action => 'browser-upgrade-required' if browser_is_not_supported
end

我目前正在使用的辅助方法:

  # test browser version
  def browser_is_not_supported
    return true unless browser.modern?
    return true if browser.chrome? && browser.version.to_i < ENV['BROWSER_BASE_VERSION_GOOGLE'].to_i
    return true if browser.firefox? && browser.version.to_i < ENV['BROWSER_BASE_VERSION_FIREFOX'].to_i
    return true if browser.safari? && browser.version.to_i < ENV['BROWSER_BASE_VERSION_SAFARI'].to_i
    return true if browser.opera? && browser.version.to_i < ENV['BROWSER_BASE_VERSION_OPERA'].to_i
    return true if browser.ie? && browser.version.to_i < ENV['BROWSER_BASE_VERSION_MSFT'].to_i
  end

这是一种方法:

# lib/browser_util.rb
module BrowserUtil
  def self.supported?(browser)
    # your code ...
  end
end

并将其从 ApplicationHelper 包装起来以在视图中使用

module ApplicationHelper
  def is_browser_supported?
    BrowserUtil.supported?(browser)
  end
end

在中间件中

Rails.configuration.middleware.use Browser::Middleware do
  unless BrowserUtil.supported?(browser)
    redirect_to :controller => 'error', :action => 'browser-upgrade-required' 
  end
end

UPDATE:它不需要位于单独的模块中(BrowserUtil)

module ApplicationHelper
  def self.foo
    "FOO"
  end

  def foo
    ApplicationHelper.foo
  end
end

在中间件使用中

ApplicationHelper.foo

在视图中它将使用包含的方法

foo
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 4 在初始化器中使用应用程序助手 的相关文章

  • 在 ruby​​ 中创建登录会话时理解“current_user”概念

    我正在阅读很棒的 Michael Hartl 教程来构建 ruby 应用程序here http ruby railstutorial org chapters sign in sign out sec 3acurrent user 我试图理
  • 如何在 Ruby 中动态调用访问器方法[重复]

    这个问题在这里已经有答案了 不管这是否是好的做法 我如何在 Ruby 中动态调用访问器方法 这是一个示例类 class Test Class attr accessor a b end 我可以使用 Object send 方法来读取变量 i
  • 设置一个带有 JQuery 掩码的文本字段

    使用 watir webdriver 我尝试设置文本字段的值 browser text field id phoneNumbers value input set 5555551234 当我运行该命令时 我可以看到 watir 找到了该字段
  • 在 postgresql 中查找和汇总具有重叠记录的日期范围

    我有一个大型数据集 我想对记录具有重叠时间的计数进行求和 例如 给定数据 id 1 name A start 2018 12 10 00 00 00 end 2018 12 20 00 00 00 count 34 id 2 name B
  • NameError:未初始化的常量 Gem::SourceIndex

    对于没有任何修改的新 Rails 应用程序 在访问主页时 成功运行后 会出现此错误bundle install 以下是版本号 ruby 1 9 3p392 2013 02 22 revision 39386 x86 64 darwin12
  • RailsAdmin 中具有 join_table 和 has_many :through 的模型的路由错误

    所以我有3个模型 category product category products 这是我的category rb attr accessible name has many category products do def with
  • Rails 3 best_in_place 编辑在不刷新页面的情况下无法工作

    我从Bernat的博客rails迷你教程中获取了评论代码 我尝试使用他的 best in place gem 添加就地编辑功能 在大多数情况下它工作正常 我的代码部署在http falling spring 3964 herokuapp c
  • RSpec 2 中使用 OR 相等

    下面这个例子的正确写法是什么 玩家的分数应等于 5 或 8 it should equal 5 or 8 do player score should 5 or 8 end Thanks Tim 5 or 8将始终产生结果 5 并且不会执行
  • 用于 S3 私有文件的 ActiveStorage

    到目前为止 我一直在使用 Paperclip 将一些文件上传到 S3 其中一些文件不是公开的 Paperclip 允许通过以下位将一些文件作为私有文件上传 has attached file image styles large 2000x
  • 添加两个 ActiveRecord::Relation 对象[重复]

    这个问题在这里已经有答案了 如何将两个关系添加在一起 当我尝试 运算符时 它返回一个数组 但我需要它来返回关系 谢谢 麦克风 Try new relation relation merge another relation
  • 如何从数组中提取特定元素?

    如果我有一个数组a 1 2 3 4 5 6 7 8 9 10 我想要这个数组的一个子集 第 1 个 第 5 个和第 7 个元素 是否可以通过简单的方式从该数组中提取这些内容 我在想这样的事情 a 0 4 6 1 5 7 但这行不通 还有一种
  • 如何使用国家宝石

    我正在尝试使用国家宝石 https github com hexorx countries 但是在我捆绑安装这个 gem 后 有一些关于如何合并它的基本问题 我是否需要创建新的控制器 模型才能访问这些国家 地区 如何创建一个简单的选择下拉列
  • 在 Yosemite 上安装 Ruby 1.9.2 时出错

    我在 Yosemite 上使用 rvm 安装 ruby 1 9 2 时遇到错误 有人可以帮助我吗 我更新了自制程序和rvm 我正在与其他人合作处理这个项目 所以我无法升级 ruby 我在下面放置了我的输出的链接 提前致谢 Kanyons M
  • 我应该如何使用 alias_method_chain 作为构建方法?

    我正在使用 Ruby on Rails 3 2 13 我想正确使用alias method chain build option name声明 因为我收到一个奇怪的错误 那是 在我的控制器文件中我有 class Articles Comme
  • Rails 4 可安装引擎,找不到文件“jquery”

    我正在创建一个 Rails 可安装引擎插件 它使用 gem jquery rails 我在 gemspec 文件中添加了这段代码 s add dependency jquery rails gt 3 0 1 and run bundle i
  • Cucumber / Savon 省略或删除日志输出

    在运行黄瓜测试时 我得到 除了测试结果之外 许多与调试 日志相关的输出 格式如下 D 2013 03 06T12 21 38 911829 49031 DEBUG SOAP request D 2013 03 06T12 21 38 911
  • Rails content_for 和yield 之间有什么区别?

    例如 content for stuff vs yield stuff 我知道它们的实现略有不同 但是有任何真正的功能差异吗 是否有普遍接受的最佳实践 yield是您指定内容区域在布局中的位置的方式 你可能有这样的事情 div h1 Thi
  • 查找 Rails 应用程序中未使用的代码

    如何查找正在运行和未运行的代码生产中 该应用程序经过充分测试 但还有很多测试unused代码 因此 他们在运行测试时得到覆盖 我想重构并清理这个烂摊子 它一直在浪费我的时间 我有很多后台工作 这就是为什么我希望生产环境来指导我 在 Hero
  • “heroku”命令存在于以下 Ruby 版本中:

    我在使用 heroku 工具带时遇到了重大问题 我正在使用 cedar 14 堆栈 当我尝试使用不是的 ruby 版本时ruby 2 0 0 dev我收到这个错误 rbenv heroku command not found The her
  • 如何让 Sidekiq 在 Heroku 上运行?

    这是我第一次尝试让 Redis 在 Heroku 上运行 我添加了一个工作dyno 就在今天 所以还没有付款 添加了RedisToGo Nano附加组件 在我的本地机器上测试了后台作业 并将应用程序推送到heroku heroku ps g

随机推荐

  • Laravel Eloquent 无法使用复合主键保存模型

    当定义复合主键然后在实例化模型上调用 save 时 会引发异常 ErrorException E UNKNOWN PDO lastInsertId expects parameter 1 to be string array given 错
  • 使用 Java Servlet API 发送 100 继续

    是否可以发送 100 Continue HTTP 状态代码 然后在使用 Java Servlet API HttpServletResponse 处理整个请求后发送一些其他状态代码 我找不到任何明确的 否 答案 尽管 API 似乎不支持它
  • Python 如何打印列表的列表

    我想用下面的代码打印 python 3 x 中的列表列表 但它给出了错误 lol 1 2 3 4 5 6 five six for elem in lol print join elem this is the error I am get
  • cabal 沙箱 v. 全局包数据库

    在 cabal 沙箱内安装时 cabal 仍将使用全局包数据库中的包 特别是来自 Haskell 平台的包 这可能会导致安装冲突 是否可以配置 cabal 来忽略全局包 db 我看到相应的功能已经实现了ghc本身 通过 no global
  • 使用 3D 变换翻转在 IE11 中不起作用(我的不同)

    我研究了 CSS3 3d 变换 最后得到了一些 CSS3 3d 翻转动作的代码 所以它在所有浏览器中都工作正常 除了互联网浏览器 IE11 所以我在 stackoverflow com 上调查了这个问题 我得到了一些解决方案 但不幸的是这些
  • Span 的“ScrollWidth”属性在 Chrome 上不起作用吗?

    我有一个跨度 里面有一些文本 document getElementById span1 scrollWidth 在 Firefox 上返回 100 作为滚动宽度 但 Chrome 仅返回 0 Chrome 不支持这个 scrollWidt
  • 解析sql中的JSON字符串

    我的表中有一列 JSON 字符串 我使用的是 SQL Server 2008 关于如何解析 JSON 字符串并提取特定值的任何想法 这是我的 JSON 字符串 id 1234 name Lasagne al frono descriptio
  • Rails 3.1 link_to 未正确显示确认或销毁

    我一直在研读 Railstutorial org 上的章节并使用 Rails 3 1 3 因为我很疯狂和 或想要挑战 我设法轻松地解决了大多数版本问题 但这个问题困扰了我一段时间 在10 4 2中 Michael Hartl使用以下代码删除
  • 如何像口语一样将数字转换为文本?

    如果值以百万为单位 那么字符串应该是 miliion thousand hundred 我使用了这段代码 但它显示的是百万值 如何解决这个问题 convert to words NSString wordNumber NSNumber nu
  • 如何在未聚焦的 WinForms TextBox/RichTextBox 中显示光标?

    我需要在 WinForms 应用程序的 RichTextBox 控件中显示光标 即使它没有焦点 我怎样才能做到这一点 我只找到了WPF的方法 如何在未聚焦时保持 WPF 文本框选择 您可以使用 WinAPI DllImport user32
  • 有没有什么方法可以获取没有查询字符串的 URL?

    我有一个像这样的网址http localhost dms mduserSecurity UIL index php menu true submenu true pcode 1235 我想获取不带查询字符串的 URL http localh
  • 使用 Node 将文件从一个 AWS S3 存储桶复制到另一个存储桶

    我正在尝试使用 Node js 将文件从 AWS S3 存储桶复制到另一个存储桶 问题是如果文件名没有空格 例如 abc csv 它工作正常 但如果我要复制到的文件的文件名中有空格 例如 abc xyz csv 它抛出以下错误 指定的密钥不
  • Phonegap、textarea不接受输入

    这是一个 Noob Gingrich 的问题 很确定我错过了一些简单的东西 有没有让文本区域在移动设备上工作的技巧 我所说的工作是指接受来自软键盘的文本 我在phonegapbuild 上有一个移动应用程序 在一页上有一个包含文本框和文本区
  • MATLAB 事件和无限休眠或检查循环

    我需要在目录中的文件进入时对其进行数据分析 我想知道如果这样更好 在目录上实现事件监听器 并在激活时启动分析过程 然后让程序永远进入睡眠状态 while true sleep 1e10 end 或者有一个循环轮询更改并做出反应 我个人更喜欢
  • C# 使用唯一的自定义数据 FCM 向设备组发送通知

    我知道我可以提供registration ids将 JSON 请求以字符串数组的形式发送到多个设备 但是 我有一个独特的令牌 我想将其发送给每个人registration ids 如何实现这一目标 而无需简单地循环发送我希望发送到的设备数量
  • 从“后退”按钮中删除文本,保留图标

    我想从后退按钮中删除文本 但我想保留图标 我努力了 let backButton UIBarButtonItem title style UIBarButtonItemStyle Plain target navigationControl
  • 从 Android 到 Web API 的 POST 数据返回 404

    我尝试将数据从 Android 客户端作为 POST 请求发送到我的 Web API 后端 但它返回 404 响应代码 这是我的代码 Backend HttpPost Route api postcomment public IHttpAc
  • 自定义视频录制屏幕

    我正在尝试实现一个应用程序 该应用程序在启动时使用我的自定义视频录制屏幕自动开始视频录制 并使用我自己的按钮来停止录制和其他按钮 到目前为止 我所做的是设计带有按钮的布局 但如何在后台添加视频录制屏幕 请帮忙 这就是我实现它的方法 publ
  • 在 Visual C++ 2013 中使用 wifstrem Shift-JIS 解码失败

    我正在尝试使用 std wifstream 和 std getline 读取以 Shift JIS cp 932 编码的文本文件 以下代码在 VS2010 中有效 但在 VS2013 中失败 std wifstream in in open
  • Rails 4 在初始化器中使用应用程序助手

    是否可以在应用程序内部包含 使用应用程序帮助器方法config initializers browser blocker rb 我正在使用浏览器宝石检测并阻止较旧的非现代浏览器 Rails configuration middleware