草庐IT

Self-Debug

全部标签

ruby-on-rails - 设计/Omniauth 失败 : How to debug it?

尝试“使用Google登录”后,我在日志中看到此错误:ProcessingbyUsers::OmniauthCallbacksController#failureasHTML我可以看到通过URL(在日志中)发送的来自谷歌的所有数据,包括用户电子邮件和姓名。那么会出什么问题呢?我的回调甚至没有被执行。我只会被重定向到我网站的登录页面。而且我很确定一切都配置正确,因为几周前它运行良好。我不认为我改变了什么。Facebook登录仍然正常。关于如何调试此故障的任何想法?除了那些充满参数和值的长URL之外,日志中没有其他内容。只有INFO消息。上面发布的是唯一一个说失败的。更新我向Control

ruby-on-rails - Rails,activerecord : self[:attribute] vs self. 属性

在Rails中访问事件记录列/属性时,使用self[:attribute]与self.attribute有什么区别?这会影响getter和setter吗? 最佳答案 它们都只是获取属性的方法-它们都只是getter。self.attribtue是一个更“传统”的getter,而self[:attribute]基本上只是[]方法。在使用两者之间切换不会产生任何影响。我建议只使用self.attribute方法,因为它在语法上更好。但是,当其他内容覆盖self.attribute方法时,使用self[:attribute]会派上用场。例

ruby-on-rails - *、self.* 和 @* 在 Ruby/Rails 模型/ Controller 中引用关联/属性时的区别

假设一个具有持久/非持久属性的Rails模型,关于引用它们的最佳实践是什么?如果您查看公开可用的代码,就会发现使用了不同的模式。例如,如果您有从一个模型到另一个模型的关联。使用self.association_name和@association_name有什么区别?。什么是更好的方式?与模型中使用attr_accessor:attr定义的非持久属性相同。您可以使用self.attr和@attr这两种方法来引用它们。什么是更好的方式? 最佳答案 self.x/self.x=y总是方法调用。(self.x只是self.__send__(

ruby - 在 Ruby 中是否有语法 : class << self . .. end 的任何相关应用程序

class上面的语法用于定义类实例变量。但是当我考虑语法意味着什么时,它对我没有任何意义,所以我想知道这种类型的语法是否用于任何其他类型的定义。我在这里的困惑点是:class附加运算符通常表示“将右侧的内容添加到左侧的对象”。但是在这个block的上下文中,这如何加起来“将这个block的内容放入类实例而不是实例的定义中”?出于同样的原因,我很困惑为什么在一个上下文中类classPoint#Instancemethodsgohereclass 最佳答案 在Ruby中,您可以重新打开现有类并添加方法。也就是说,你可以说:classFo

ruby-on-rails - 为什么使用 "self"访问 ActiveRecord/Rails 模型属性?

在我的整个应用程序中,self.没有必要引用用户名。name工作正常。为什么以下代码需要self才能按预期工作?classUser顺便说一句,我知道validates_presence_of可以用来防止保存,但如果没有给出名称,我想使用默认值保存。rails3.0.7。 最佳答案 通常使用self是为了强制Ruby将其识别为方法调用,而不是将其错误解释为变量。如果事先不知道名为day=的方法,那么day="x"在Ruby中看起来就像一个变量赋值。self.day="x"始终是方法调用。之所以麻烦是因为name和name=方法是在解析

ruby - 在 ruby​​ 中,self.method 和类 << self 中的方法有什么区别

classFoodefself.one;1endclass["two","one"]有人告诉我上述方法“一”和“二”在概念上是不同的,但我不明白是怎么回事。它们都是单例方法-在概念和应用上有什么区别? 最佳答案 在应用上,没有区别。在概念上,区别是微妙的,但在第一种情况下,您是在当前上下文中操作,并在另一个类实例上定义一个方法(实际上是其Eigenclass中的实例方法),而在第二种情况下,您正在进入其他类实例的元类(“Eigenclass”)的上下文,然后定义一个实例方法。编辑:我应该补充说选择class的原因在某些情况下是...

ruby - "extend self"是实用模块的反模式吗?

关闭。这个问题是opinion-based.它目前不接受答案。想改善这个问题吗?更新问题,以便可以通过editingthispost用事实和引文回答问题.7年前关闭。ImprovethisquestionSteveKlabnik最近在pullrequest中说对于实用程序模块:[Thecode]obscuresthefactthattheseareclassmethods,andwewanttousethemthatway.Plus,Ithinkthatextendselfisgenerallyananti-pattern,andshouldn'treallybeusedexcepti

Ruby self 定义

我在读一本Ruby书时偶然发现了伪变量self的定义:self-receiverobjectofthecurrentmethod有人可以分解该定义并解释它的含义吗?我一点都不明白。编辑:我实际上非常清楚什么是self(及其应用程序),而且我知道如何在Google上进行搜索。我只是想知道是否有人可以解释我引用的定义。具体来说。 最佳答案 Ruby和其他语言(例如Smalltalk和Objective-C)更喜欢术语“消息传递”,而Java和C++更喜欢“方法调用”。也就是说,“Java方式”是调用对象的方法——在对象的上下文中运行代码

ruby-on-rails - self.send(method, =, value) 不起作用

我正在尝试创建一个Ruby类,其中initialize方法接受选项的散列。然后,我将这些选项作为类的attr_accessor。现在,我可以做类似的事情classUserattr_accessor:name,:email,:phonedefinitialize(options)self.name=options[:name]self.email=options[:email]self.phone=options[:phone]endendUser.new(:name=>'SomeName',:email=>'some-name@some-company.com',:phone=>435

ruby-on-rails - 如何在 ruby​​ 1.9.3/Rails 3.2.1 中安装 ruby​​-debug

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Rails3.1andRuby1.9.3p125:ruby-debug19stillcrasheswith“Symbolnotfound:_ruby_threadptr_data_type”我已经完成了打印到控制台的工作——我想回到20世纪并开始使用调试器!!但是如何安装ruby​​-debug?当我尝试安装ruby​​-debug19gem时,ruby-debug.c的native编译失败。我查看了其他SO帖子,但还没有找到答案......我正在使用Ruby1.9.3-p0我正在使用Rails3.2(当然还