如何使用ruby中的类和依赖项

时间:2012-01-22 06:27:19

标签: ruby ruby-on-rails-3

我已经改变了这个问题,以便更好地反映我不理解的内容 例如,如果我尝试访问railties类AppBuilder中的方法。

require 'rails/generators/rails/app/app_generator'
g = Rails::AppBuilder.new
puts g.rakefile.inspect

我收到一条错误消息activesupport-3.1.3 / lib / active_support / secure_random.rb:5:in'':uninitialized constant SecureRandom(NameError)

我不明白这一点。每个班级不应该与其他班级“独立”吗?这不是面向对象编程的全部意义吗? 现在,如果不是那么重要的话,我怎样才能弄清楚我需要添加什么依赖?是解决这个问题的某种工作流程吗?我可以以某种方式弄清楚要添加哪些依赖项来查看文档?这个问题与加载路径有关吗?我可以从gem或rails或其他任何东西加载所有依赖项吗?我只是不明白!

doc:http://api.rubyonrails.org/classes/Rails/AppBuilder.html github:https://gist.github.com/rails/rails/blob/master/railties/lib/rails/generators/rails/app/app_generator.rb

1 个答案:

答案 0 :(得分:2)

没有简单的方法可以找出AppBuilder中使用的依赖项,因为大部分依赖项都是在其他地方设置的。所以大多数时候你需要做一些试验和错误才能使依赖正确。

您发布的代码风格不佳。请熟悉如何正确编写ruby代码。给自己买一本书,即雄辩的红宝石,或者只是开始阅读红宝石博客。

ruby​​中的依赖关系非常简单。将加载您需要的每个文件,并且负载将通过文件递归,然后加载其他要求。加载仅在所有必需文件都在load path上时才有效。此加载路径类似于您的系统路径,您可以向其添加目录以告知ruby在哪里查找文件。

一般来说,库和它们的依赖项都有专门的入口点。这些通常都是记录在案的,所以如果你使用它们,你就可以从一开始就获得所有的依赖关系。如果你只想使用主动支持,那么这个例子就是require 'rails'以便使用rails或require 'active_support/all'。如果你不想挑选文件/课程而不是你自己找到你需要的其他课程。那部分与oop无关,它更像是一个依赖问题(其他语言都有明显的依赖关系)。

在您的情况下,下一步是将require "securerandom"添加到文件的开头,然后检查接下来会出现错误。