Ruby on rails 如何确定方法所在的类/模块
通过在Eclipse中使用Java,我可以非常轻松地确定方法的定义位置:只需按住ctrl键并单击方法调用,它就会将您带到其包含类中的方法定义。很明显,这是Eclipse造成的,但即使使用普通的旧Java,我们仍然可以依赖import语句 在Rails开发中,方法查找似乎非常困难 下面是一个例子:Ruby on rails 如何确定方法所在的类/模块,ruby-on-rails,ruby,Ruby On Rails,Ruby,通过在Eclipse中使用Java,我可以非常轻松地确定方法的定义位置:只需按住ctrl键并单击方法调用,它就会将您带到其包含类中的方法定义。很明显,这是Eclipse造成的,但即使使用普通的旧Java,我们仍然可以依赖import语句 在Rails开发中,方法查找似乎非常困难 下面是一个例子: require 'test_helper' class UserStoriesTest < ActionDispatch::IntegrationTest fixtures: product
require 'test_helper'
class UserStoriesTest < ActionDispatch::IntegrationTest
fixtures: products
LineItem.delete_all
Order.delete_all
ruby_book = products(:ruby)
get "/"
assert_response :success
assert_template "index"
cart = Cart.find(session[:cart_id])
assert_equal 1, cart.line_items.size
assert_equal ruby_book, cart.line_items[0].product
get "/orders/new"
assert_response :success
assert_template "new"
end
需要“测试助手”
类UserStoriesTest
比方说,我想更仔细地看看assert_equal方法。如果我使用的是Java,那么包含assert_equal的类可能会由该类中的import语句描述,并明确指定其位置(例如Java.lang.SomeCoreClass)。因为我不知道这个方法到底是在哪里定义的,所以我最后要做的就是在谷歌上搜索“assert_equal”,发现我正在研究的方法(可能也是希望)是在Test::Unit::Assertions中定义的
我很想听听一些人关于他们确定方法位置的方法。您可以使用方法(:).owner
跟踪方法的类。在您的情况下,它将是方法(:assert_equal).owner
您可以使用方法(:).owner
跟踪方法的类。在您的情况下,它将是方法(:assert_equal).owner
试试这个:
class Bong
def smoke
puts "smoke"
end
end
Bong.method(:smoke)
Bong.method(:smoke).source_location
试试这个:
class Bong
def smoke
puts "smoke"
end
end
Bong.method(:smoke)
Bong.method(:smoke).source_location
您是否询问哪个编辑器支持ctrl单击“转到定义”?RubyMine就是这么做的。你是在问哪个编辑器支持ctrl键点击“转到定义”吗?鲁比明做得最好,所以回答。道具。一个相关的例子总是有帮助的;)lmao是迄今为止最好的答案。道具。一个相关的例子总是有帮助的;)是的,但这对我有什么帮助?我不能只启动irb并键入assert_equal.owner。您可以在项目的范围内使用它来确定是哪个类定义了您的方法。如果你在irb中定义你的类,那么你也应该能够在irb中使用这个方法?我不能只启动irb并键入assert_equal.owner。您可以在项目的范围内使用它来确定是哪个类定义了您的方法。如果您在irb中定义了类,那么您也应该能够在irb中使用这个方法。