问题标签 [pry-rails]

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 回答
146 浏览

ruby-on-rails - 终端和撬动控制台中的种子文件矛盾

我有一个小问题。我正在制作一个简单的项目网站,它有 4 个模型(用户、文章、讨论、评论)。

成立了以下协会:

用户有很多讨论和评论,文章有很多讨论(和通过讨论发表评论)。评论属于讨论和用户,讨论属于文章。

在我的seeds.rb 文件中,我已将条目放入这些表中,并具有正确的关联。在做了几个条目之后,我已经包括了一个

这样我就可以在终端中看到一切正常。

使用rails db:seed时,puts消息会为用户和文章输出正确的数字,但会为评论和参数输出 0。

但是,我可以签入rails dbconsoleSELECT * FROM comments;将返回种子文件中的所有条目。

在 pry-rails 控制台中,关联似乎也已到位。诸如Comment.first.user将根据种子文件输出预期关联的命令。

为什么行在puts "Created #{Comment.all.length} comments..." 终端中输出“Created 0 comments...”,但Comment.all.length在 pry 控制台输出 8(在种子文件中创建的评论数)?

0 投票
1 回答
741 浏览

ruby-on-rails - 如何为所有项目全局安装 pry/pry-rails?

如何在不必将其包含在项目中的情况下为每个项目全局替换irbrails console替换?pry/pry-console

0 投票
1 回答
60 浏览

ruby-on-rails - 如果包含 Pry 调试器语句,则函数返回不同的值

我在编写一个 ruby​​ 函数时遇到了一个奇怪的问题,该函数用于从通过解析 JSON 字符串创建的哈希中删除不需要的项目。当我在函数中包含 pry 语句时,该函数将返回我所期望的,如本文底部所示。当我删除 pry 语句时,该函数会返回其他内容。我不太确定为什么会这样,我想我会在这里问,同时我试图找出解决我问题的替代方案。

下面,slides 是一串空格分隔的整数,因此 slides.split(' ') 返回一个整数数组。幻灯片组是经过解析的 JSON 哈希。如果需要,我可以提供一个带有 JSON 哈希的文件,但尝试在此处输入它会让人感到沮丧。我认为没有必要查看哈希,因为问题似乎在于 pry 及其对函数的影响。

0 投票
0 回答
301 浏览

ruby-on-rails - rails-pry 无法创建断点:before_session 挂钩失败:NoMethodError:未定义的方法 `chomp' for nil:NilClass

rails-pry用来创建一个带有binding.pry语句的断点。这几乎可以正常工作。但是现在有这个有趣的新错误消息,我什至不确定如何调试调试器:

结果是该binding.pry语句被忽略并且我打算检查的代码继续运行。

0 投票
1 回答
1037 浏览

ruby-on-rails - Rails RSpec 撬“重新加载!”

  • 红宝石 2.3.1
  • 导轨 (3.2.22.4)
  • rspec-rails (2.14.2)
  • 撬轨 (0.3.2)
  • 撬拜虫(3.6.0)
  • 撬 (0.10.4)

我使用的是旧版本的 Ruby 和 Rails。

我在 Ubuntu 终端中运行 RSpec 测试:

我正在使用pry断点(binding.pry- 在我的 RSpec 测试中)。

reload!在调试这些断点中的代码时缺少该方法(仅在 RSpec 下)。(我的意思是动态地重新加载更改的模型代码 - 比如动态添加新方法等。)这个方法甚至没有在那里定义。我确实有reload!在 Rails 控制台中定义和工作的方法 - 但不是在 RSpec 调试断点中。

如何reload!在 RSpec 中设置?

我尝试了pry gem 如何重新加载的解决方案?,但都不适合我。

这似乎是最接近真正的解决方案:https ://stackoverflow.com/a/50966785/6594668 ,它确实定义了reload!- 但这reload!没有任何作用。

快速示例:

当我运行 Rails 控制台时,将方法名称从 更改foo1foo2,调用reload!- 然后这些调用可以正常工作:

但是 - 当我在 RSpec 调试断点中做同样的事情时 - 它实际上并没有重新加载代码 - 即使我reload!用两种方式中的任何一种手动定义:

1. https://stackoverflow.com/a/50966785/6594668

2. https://github.com/rweng/pry-rails/issues/99#issuecomment-364272642

看起来我仍然缺少一些东西(reload!在 RSpec 中工作)。

0 投票
1 回答
191 浏览

ruby - Pry 中的 ls 命令如何能够接受 -l 作为参数?

我最近发现lsin pry 可以采取这样的论点:ls -l.

我最初的问题是这-l部分实际上是什么——它显然不是字符串或符号,也没有l定义局部变量或方法,那么幕后是否还有其他事情发生?

作为我的问题的扩展,ls只是 pry 定义的“普通”Ruby 方法,还是它的行为略有不同?

我还注意到,如果传递字符串 ( ls 'l') 或符号 ( ls :l),则会得到不同的输出。是否有可能选项的完整参考?

0 投票
1 回答
140 浏览

ruby-on-rails - rails 不会在没有撬动的情况下更新 ajax 请求上的会话哈希

我正在尝试在 Rails 6 上开发一个购物车系统(用于实践电子商务项目)。

代码(解释):

我有一个带有类属性“add_to_cart_link”的链接,然后我使用 jquery 选择具有提到的类的元素并在它们上设置一个点击监听器。点击监听器发送一个ajax请求到'shopping_experience/add_to_cart'。然后控制移动到shoppingExperience控制器内的“add_to_cart”方法。

问题是即使执行了 add_to_cart 方法,它也不会更新我的会话哈希,除非我使用“binding.pry”(这是用于调试的 pry gem 的一个功能)。在撬期间,每当检查散列(会话散列)的状态时,它总是它假设的状态,并且当我将一些东西添加到购物车时发生变化。

这是我的视图模板(index.html.erb):


这是我的自定义(myjs.js.erb)

add_to 购物车方法:

因此,如果从末尾删除 bindin.pry,我的会话根本没有更改,并且我确实在终端中收到“在添加到购物车方法结束时”消息(即使我删除了 binding.pry)。这意味着确实调用了 add to card 方法,但我的会话没有得到更新,如果使用 pry 来调试有什么问题,它就会开始工作。我觉得它可能与使用 ajax 请求有关,因为会话可能没有得到更新或刷新。我真的在为此苦苦挣扎,有人可以帮忙吗?

这是 github 回购:https ://github.com/HaroonAzhar/ship-shop (我认为回购是公开的),

如果有人想更多地查找代码。

0 投票
1 回答
66 浏览

ruby-on-rails - 是否为每个终端选项卡缓存本地文件?

我正在使用本地库(gem),让我们B在我的 rails 应用程序中调用它A(Rails 版本 6.0.2.2)

A的 Gemfile 中,我需要B通过:

当我rails c使用 pry 时,我可以B正确访问它的所有内容。但是,当我对 to 进行本地更改B并重新打开rails c时,这些更改不会反映。

如果我退出我打开的终端(Mac OS)选项卡rails c并打开另一个选项卡,突然间我所做的所有更改都会B反映。

Pry 是否会在幕后缓存任何导致这种片状的东西?

0 投票
0 回答
97 浏览

ruby-on-rails - Pry-rails 似乎损坏了我的终端,我该如何解决这个问题?

希望有人可以帮助我解决这个问题。我注意到一段时间以来,在使用标准的 Ruby 撬动时,偶尔撬动似乎会卡在一个循环中,需要我杀死终端并重新打开它。这有点烦人,但还不错,因为我可以重新打开终端,一切都会好起来的......

好吧,我最近开始使用 Rails,现在,每当我的 pry-rails 挂断并杀死终端时,当我重新打开终端时,终端屏幕完全是空白的。它将允许输入,但我的路径已经消失,命令似乎什么都不做。

有没有其他人在撬或撬轨上遇到过这个问题?

一直无缘无故地挂断我的电话已经够烦人的了。

Ps 当我说我的 pry-rails 卡在一个循环中时,我的意思是,只要它的代码输出相当长......比如说...... 30 行或更多,pry 终端似乎会停止在一个新行上说(结束)。它不允许更多的命令输入,也不会接受任何文本输入。我可以继续按回车键,但这会导致之前打印的代码一遍又一遍地输出。这需要我杀死终端。现在有了这个奇怪的终端损坏问题,我需要重新启动我的 mac 才能再次开始使用我的终端。

0 投票
1 回答
281 浏览

ruby-on-rails - 使用 pry 时立即在 Rails 控制台中同时评估多行代码?

假设我们已经pry安装,打开 rails 控制台,运行

评估在第 2 行之后停止(因为第二行的输出在屏幕外运行,因此控制台打开了输出):

在此处输入图像描述

我们如何才能让控制台停止执行,而是在执行下一行之前显示一行的全部输出,即执行它接收到的所有代码行?有没有办法在不移除 pry-rails gem 的情况下实现这一点?