首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Rails 3.0.9 + Devise + Cucumber + Capybara臭名昭着的"没有路线匹配/用户/ sign_out"

这个问题是关于Ruby on Rails应用程序中使用Devise进行身份验证和授权的问题,以及Cucumber和Capybara进行行为驱动开发和测试的问题。问题的核心是在尝试访问/users/sign_out路由时出现了路由匹配错误。

首先,我们来解决路由匹配错误的问题。在Rails 3.0.9中,Devise的路由配置可能与其他路由发生冲突。为了解决这个问题,请确保在config/routes.rb文件中将Devise路由放在其他路由之前。例如:

代码语言:ruby
复制
devise_for :users

# 其他路由

接下来,我们来解决Cucumber和Capybara的问题。Cucumber是一个行为驱动开发(BDD)工具,可以帮助开发人员编写可读性强且易于理解的测试用例。Capybara是一个集成库,可以让你在Ruby和Rails应用程序中模拟Web浏览器操作。

在这个问题中,我们需要编写一个Cucumber测试用例,以确保在访问/users/sign_out路由时,能够正确地注销用户。测试用例可以如下所示:

代码语言:txt
复制
Feature: User sign out

  Scenario: User signs out successfully
    Given I am signed in as a user
    When I visit the sign out page
    Then I should be signed out

接下来,我们需要编写相应的步骤定义,以实现上述测试用例的自动化测试:

代码语言:ruby
复制
Given(/^I am signed in as a user$/) do
  # 在这里编写登录用户的代码
end

When(/^I visit the sign out page$/) do
  visit '/users/sign_out'
end

Then(/^I should be signed out$/) do
  # 在这里编写检查用户是否已注销的代码
end

最后,我们需要确保应用程序中的注销功能正常工作。可以使用以下代码来实现注销功能:

代码语言:ruby
复制
class UsersController< ApplicationController
  def sign_out
    sign_out_user
    redirect_to root_path
  end

  private

  def sign_out_user
    # 在这里编写注销用户的代码
  end
end

总之,这个问题涉及到了Rails应用程序中使用Devise进行身份验证和授权、Cucumber和Capybara进行行为驱动开发和测试以及应用程序中的注销功能。通过解决路由匹配错误、编写Cucumber测试用例和实现注销功能,我们可以确保Rails应用程序中的用户注销功能正常工作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

精选 Flexport 在 HackerOne 这一年 6 个有趣的安全漏洞

一开始,我们收到一份报告,展示了如何通过暴力攻击来获得已泄露用户的访问权限。 ? 原因: 我们使用 Authy 作为我们的 2FA 合作伙伴,他们的 rails gem 不包括任何内置的速率限制。...Authy rails gem hook 住 Devise (一个受欢迎的 rails 认证/用户管理库),并在登录后使用以下代码要求 2FA: def check_request_and_redirect_to_verify_token...然而实际上,Devise 调用 authenticate? 检查用户是否进行了身份验证(在此处的代码之后运行): def authenticate?(*args) result = !!...修复: 将 warden.logout 行更改为 sign_out 可以解决这个问题,因为 sign_out 有其他代码来清除登录。...教训: 连信誉良好的安全公司有时也会出错,并且渗透测试也没有好的替代品。 对我们来说,最经济有效的方法仍然是 HackerOne。

2.4K80

20+最好的开源自动化测试工具

官网:http://appium.io/ Cucumber ? 是一个基于行为驱动开发概念的开源工具,Cucumber允许您通过执行最优地描述应用程序行为的示例来进行自动化的验收测试。...Canoo WebTest是一个用于web应用程序自动化测试的开源工具。这个工具简单、快速,非常适合用于报告目的。但它没有提供良好的javascript支持。...官网:https://www.soapui.org/ Capybara ? Capybara是一个开源的验收测试框架,在测试web应用程序时非常有用。它模拟与应用程序交互的真实用户的行为。...它可以与Cucumber、RSpec、Minitest等其他测试工具一起使用。...为了选择正确的开源测试工具,你应该确保该工具是处于活跃维护状态的,并且与你所在企业业务、团队、技能匹配,并且是团队里有相应的专家。

9.2K41
  • “小众”之美——Ruby在QA自动化中的应用

    不涉及科学计算,不涉及服务开发,在没有这些需求的情况下,Python和Java不再是必需。 脱离了开发语言的平台,但在不关注白盒测试的情况下并无太多不妥。...当Ruby用于测试开发,基本“屏蔽”了性能上的劣势,充分展现了敏捷、易用的特点,也是选择这一技术路线的主要因素。...中编写匹配规则及预期输出,基本上实现了单个接口无编码的数据驱动测试。...在针对微信M站的UI自动化方案中,还需解决微信WebView的切换,及多窗口的切换问题,appium_lib都提供了较好的支持,下面介绍下结合了Appium及Cucumber的自动化框架Coral-APP...测试框架,使用接近自然语言的描述,提高了Case可读性,编写上也没有其他框架那么复杂。

    1.9K30

    从Ruby到Node:重写Shopify CLI,提升开发体验

    不过,生态系统正朝着用编译式语言(如 Go 和 Rust)实现 JavaScript 工具的方向发展,因此我们希望可以摆脱对 Node 的依赖。但这种事情并没有发生。...在基于框架(如 Rails)的项目中,框架(如 MVC)通常会支持这些模式,但我们没有框架。因此,我们必须开发自己的模式和机制,并保证开发人员遵循它们。...所有命令都有一个包含命令业务逻辑的服务,有些服务没有绑定到特定的命令。 除了上面提到的,我们还有提示符,它包含通过标准输入提示用户的函数,以及将一组函数分组到特定域的实用程序。...因此,我们决定投资一个使用 Cucumber 的端到端测试套件,以确保各种工作流可以端到端工作。Cucumber 为我们提供了描述、运行和调试这些测试的工具和 API。...利用 TypeScript TypeScript 的类型系统和编译器让我们可以相信,代码单元和外部依赖关系之间的契约是匹配的。

    46120

    从一个故事开始谈项目与团队管理

    进度管理: 日历,工作流,项目路线图和Gantt甘特图           5. 测试管理: 项目软件缺陷Bug状态跟踪,反馈           6. ...3.2、抽象出项目的核心 对于大而全的项目把握住用户的痛点,找出系统的核心需求,分期,分批开发; 关键需求与用户共同画出产品原型。...、项目计划控制和协调机制生搬硬套PMP,不符合公司企业文化和体制机制、团队总是关注项目的忙碌而不是项目的成果、组织没有明确的授权,权责不匹配、喜欢照搬过去的项目经验来管理现在的项目,忽视了项目的唯一性、...5.3、计划过程中的问题 5.3.1、没有良好的沟通渠道设计; 5.3.2、不主动去激发用户参与项目的热情; 5.3.3、靠主观感觉盲目制定项目计划; 5.3.4、在不了解项目具体情况下对项目盲目下定义...; 5.3.5、计划资源把一切想的太美好,主观性强; 5.3.6、靠个人感觉来分派工作而不是客观的评估每个人的能力匹配程度; 5.3.7、对变更没有实质管理,更多是体现在文档上而不是实际工作中; 5.3.8

    74460

    2020年将改变Web开发的顶级技术

    2.运动用户界面(UI)设计 如今的客户要求卓越的客户体验,比使用自然安全的数据进展更简单,更好的UI计划是吸引目标人群的奥秘。...许多组织正在将AI融入其先进的变革技术中,并且没有迹象表明它会回落。最近,TELUS Health的Babylon制作了一个免费的社会保险多功能应用程序,可让您检查,与专家交谈并访问您的健康记录。...PWA通过其先进的Web功能直接在其程序中为客户提供诸如了解的应用程序。由于它能够分离工作并能够将物质与不同的小工具相匹配,因此它的倾斜和吸收力量。...SPA可让客人从麻烦的路线和旋转菜单中解脱,并适应任何小工具。 9. Web服务器软件 ? Web工作人员一词可以指将您的网站传达给最终客户的设备(物理PC)或产品(PC应用程序)。...Ruby on Rails 众所周知,作为RoR,Ruby on Rails已成为当今Web工程师中的首选之一。自2005年发布以来,RoR仍被完全允许使用,它是开源的,并且可以在Linux上运行。

    1.3K10

    未来创新的人工智能测试自动化工具:第三次浪潮

    我最近看到了一个Applitools的演示,在他们的路线图上有一些很酷的特性,他们计划在现有机器学习技术的基础上添加这些特性。...这些事情中的很多还为时过早,但看看路线图会让你感觉到,现在有多少人工智能正在被纳入测试工具公司的路线图中。...很明显,Charles相信在测试中使用已知的模式匹配和不同的人工智能技术是非常有效的。...“质量风险”是他们提供的更令人兴奋的洞察力,因为它将用户的精力集中在重要的事情上,让用户确切地知道在上一次构建中哪些文件/方法/行发生了更改,而这些更改没有经过特定测试类型(或任何测试类型)的测试。...测试是以类似于Cucumber的BDD语法的简单格式定义的,因此它不需要代码,也不需要处理元素标识符。

    1.4K10

    驱散谬见 | 7个常见的 DevOps 误区解读

    2002年的转型大家都非常熟悉了,他们CTO说我们必须要转成SOA的架构,所有不按这个原则工作的人都要被fire掉,他们通过强力的转型,开启了SOA架构的路线。...- 2009年推特也遇到了很复杂的情况,他们把前端巨石架构的Ruby on Rails系统花了一年多时间做重构。...- Facebook经历了快速成长后,在2009年运维已经接近崩溃,无法跟上用户的增长,到处救火,于是开始进行技术和文化上的变革。...,与DevOps频繁发布变更的模式相匹配等,所以我们认为本质上二者是可以兼容的。...没有传统的控制方式,并不意味着DevOps没有安全和合规性的要求,反而它会更强。 ? 5、误区五 第五个误区,DevOps没有Ops或者说排斥了IT运营。

    884110

    成功微服务实施的技术演进微服务演进的技术背景通过度量驱动架构的微服务化

    把一个单体 API 集合根据 LoB 功能的依赖程度拆分成了 API 的组。这样,我们可以在用户端无感知的情况下修改后台的部署架构。...大体过程如下: 构建新的自动化测试:采用 Cucumber ,Capybara 和 Selenium 来实现前端测试。Junit 和 Moco 做后端测试。...如果你是 Ruby,就可以用 Ruby On Rails 或者 Sinatra 这样的框架来运行。虚拟机镜像里只需要安装一个语言运行时和固定的应用启动点就可以了。 这样就做到了独立开发、独立部署。...可以说,没有 DevOps 的实践和 Docker 这个工具,就没有今天微服务的流行。...随之而来的是公共领域的应用解决方案,例如用户管理和登录这样的基础组件会第一个被微服务化。 毕竟,我们没有必要重新发明那么多轮子…… 独立存储/混合存储 ?

    58910

    微服务简介

    还有部分 Java 应用被打包成自包含(self-contained)的可执行 JAR。类似地,Rails 和 Node.js 应用被打包成有一定层次结构的目录。...例如,以我们的出租车为例,一个是乘客的应用,一个是司机的应用。这样更容易为特定的用户、司机、设备或者专门的用例部署不同的场景。...每个后端服务暴露一个 REST API,大部分服务消费的 API 由其他服务提供。例如,Driver Management 使用了 Notification 服务器来给司机发送一个可选路线通知。...然而,换另一种方式去思考微服务架构模式,它是没有商业化的 SOA,没有集成 Web 服务规范(WS-)和企业服务总线(Enterprise Service Bus,ESB)。...你可以仅部署满足每个服务的容量和可用性约束的实例数目。此外,你可以使用与服务资源要求最匹配的硬件。

    44910

    REST API有关幂等性等11条最佳实践

    规则 #3:不要在 url 中添加 .json 或其他扩展名 这似乎是 Rails 的某种默认行为,因此它间歇性地出现在公共 API 中。Shopify在这里感到羞耻。...这略微偏离了 410 的原意("以前存在,但现在没有了"),但实际上没有人会使用这个错误,而且它也很容易解释,也不会有未来的 HTTP 规范会重新使用你编造的 4XX 号码的风险。...查找与您打算提交的内容相匹配的现有交易(希望您有匹配的客户参考 ID)。 为此,客户端必须序列化所有创建操作 - 否则会出现竞争条件。...这里有一个技巧 - 除非您使用用户提交的 ID(“让客户端选择 ID”),否则您需要在错误消息中包含现有 ID,或者提供一种通过幂等键查找 ID 的机制。...但是,它使服务器实现变得非常复杂:您需要将所有响应存储一段时间,并且需要验证客户端是否为每个请求发送了完全相同的参数。 Stripe选择了这条路线。

    26720

    众多Python Web框架比较,哪个适合你,你就用哪个!

    web2py 在Ruby世界中,Ruby on Rails是事实上的Web框架。...DePaul大学计算机科学教授Massimo Di Pierro受到Rails的启发,用Python创建一个易于设置和使用的Web框架。结果是Web2py。...Zope通过从Web获取请求,将请求的参数与内部对象数据库(ZODB)匹配,并使用请求的GET或POST参数执行该对象来工作。无论从对象返回什么,都会返回给客户端。...如果要构建支持高度用户交互的Web应用程序,则需要自己添加它们。 CherryPy CherryPy已经存在了超过10年,但并没有失去最初区分它的极简主义和优雅。...如果需要为给定路线进行预处理或后处理,Falcon也会为这些路径提供挂钩。 Falcon对API的关注意味着用传统的HTML用户界面构建Web应用程序几乎没有。

    4.6K20

    机器人相关学术速递

    https://arxiv.org/abs/2112.04350 作者:Aleksey Postnikov,Aleksander Gamayunov,Gonzalo Ferrer 摘要:为了规划一条安全有效的路线...在这项工作中,我们介绍了iRoPro,一个交互式机器人编程框架,它允许几乎没有技术背景的最终用户教授机器人新的可重用动作。...我们将演示编程和自动规划技术相结合,允许用户通过动觉演示教授新动作来构建机器人的知识库。这些操作被概括并与任务计划器一起重用,以解决用户定义的以前未发现的问题。...我们将结果与后设计实验进行比较,在后设计实验中,我们进行了一项用户研究,以验证我们的方法在实际最终用户中的可用性。...但由于雷达噪声的存在,雷达也是一种极具挑战性的传感方式。最近的工作在利用激光雷达标签监督对雷达图像中的空闲空间和占用空间进行分类方面取得了巨大进展。然而,还有几个问题没有解决。

    27610

    .Net开发者不容错过的技术类RSS订阅指南

    如何找到大佬的 Twitter/Youtube/Stackoverflow 的订阅源 Twitter 订阅举例 大家知道 C#/TypeScript之父 Anders Hejlsberg 是没有个人博客的...进入他的博客发现并没有新的什么博客文章,发现他喜欢在stackoverflow上答题,其主页为https://stackoverflow.com/users/400547/jon-hanna。...用户或组织的仓库的RSS地址 订阅用户的仓库,举例: https://rsshub.app/github/repos/yanglr 订阅组织的仓库,举例: https://rsshub.app/github...pull/:user/:repo 参数: user, 必选 - 用户名 repo, 必选 - 仓库名 Github用户的RSS地址 举例: https://rsshub.app/github/user/...参数: query, 必选 - 搜索关键词 sort, 可选 - 排序选项(默认为bestmatch) order, 可选 - 排序顺序,desc和asc(默认desc降序) 排序选项 sort 最佳匹配

    1.2K41

    .Net开发者不容错过的技术类RSS订阅指南

    https://rsshub.app/infoq/topic/43 InfoQ中文- REST https://rsshub.app/infoq/topic/28 InfoQ中文- Ruby on Rails...如何找到大佬的 Twitter/Youtube/Stackoverflow 的订阅源 Twitter 订阅举例 大家知道 C#/TypeScript之父 Anders Hejlsberg 是没有个人博客的...Stack overflow订阅举例 比如,我最近比较关心 .net core,在github上找到了coreFx项目的活跃开发者Jon Hanna, [1556426119175] 进入他的博客发现并没有新的什么博客文章...用户或组织的仓库的RSS地址 订阅用户的仓库,举例: https://rsshub.app/github/repos/yanglr 订阅组织的仓库,举例: https://rsshub.app/github...pull/:user/:repo 参数: user, 必选 - 用户名 repo, 必选 - 仓库名 Github用户的RSS地址 举例: https://rsshub.app/github/user/

    1.5K40

    「首席架构师推荐」一系列很棒的的浏览器端JavaScript库资源

    url-pattern - 比url和其他字符串的正则表达式字符串匹配模式更容易。将字符串转换为数据或数据为字符串。 数字 Numeral-js - 用于格式化和操作数字的JavaScript库。...pathjs - 用于Web浏览器的简单轻量级路由。 crossroads- JavaScript路线。 davis.js - 使用pushState的RESTful可降级JavaScript路由。...Rails Ranger - Ruby on Rails API的固定REST客户端。...旅游和指南 intro.js - 为您的网站和项目提供新功能介绍和分步用户指南的更好方法。 shepherd - 引导您的用户浏览您的应用。...BigText - jQuery插件,计算将一行文本与特定宽度匹配所需的字体大小和字间距。 circletype - 一个jQuery插件,可以让你在网络上输入曲线。

    6.7K21

    「沙里淘金」精选浏览器端JavaScript库资源推荐

    url-pattern - 比url和其他字符串的正则表达式字符串匹配模式更容易。将字符串转换为数据或数据为字符串。 数字 Numeral-js - 用于格式化和操作数字的JavaScript库。...pathjs - 用于Web浏览器的简单轻量级路由。 crossroads- JavaScript路线。 davis.js - 使用pushState的RESTful可降级JavaScript路由。...Rails Ranger - Ruby on Rails API的固定REST客户端。...旅游和指南 intro.js - 为您的网站和项目提供新功能介绍和分步用户指南的更好方法。 shepherd - 引导您的用户浏览您的应用。...BigText - jQuery插件,计算将一行文本与特定宽度匹配所需的字体大小和字间距。 circletype - 一个jQuery插件,可以让你在网络上输入曲线。

    5.9K20

    人工智能学术速递

    我们直接考虑到达时间的分布,而不是对条件强度函数施加特定假设,并提出使用似然比损失与矩匹配机制进行优化和模型选择。...此外,我们还提供了在可视化仪表板中使用方面观点作为解释的建议的适用性示例,该仪表板允许获得从输入图的嵌入中获得的类似用户最喜欢和最不喜欢的方面的信息。...此外,越来越多的方法采用半监督的方法来要求更多的训练数据。然而,这些方法仍然存在两个挑战:(1)互动不足:实体和关系之间的互动没有得到充分利用(2) 低质量引导:生成的半监督数据质量低。...EHRs中存储的信息中,有一半以上是非结构化文本(例如,提供商说明、运营报告)的形式,基本上还没有开发出来供二次使用。...当应用于在基准数据集上的图像分类任务时,我们证明了免疫网络RAILS在基线方法(DkNN鲁棒CNN)的对抗性精度方面提高了12.5%,而在干净数据上没有明显的精度损失。

    79540

    人工智能学术速递

    根据2019年2月在联合国总部举行的启动代码8.7会议,本次研讨会的重点是将美国人工智能研究20年社区路线图(AI路线图)中概述的宏伟目标与实现联合国可持续发展目标8.7(消除现代奴隶制)的关键挑战联系起来...然而,虽然已有一些基于协方差的特征相关性分析方法,但对于基于图神经网络模型的图的结构特征相关性研究还没有相关的研究。...由于动漫最近获得了主流的关注,我们对于用户的喜好和观看习惯还没有足够的信息。因此,为这种相对晦涩的娱乐媒体构建推荐引擎是一项艰巨的任务。...针对这一问题,本文提出了一种基于图神经网络的关键值匹配模型(MatchVIE)。该方法通过基于相关性评价的键值匹配,绕过了对各种语义的识别,只关注实体间的强相关性。...,可以实现数据的自动清洗、模式匹配、数据发现、语义数据类型规范化和敏感数据识别。

    93430
    领券