Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ruby中使用类和依赖项_Ruby_Ruby On Rails 3 - Fatal编程技术网

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

如何在ruby中使用类和依赖项,ruby,ruby-on-rails-3,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\u support/secure\u random.rb:5:in`':未初始化常量SecureRan

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

require 'rails/generators/rails/app/app_generator'
g = Rails::AppBuilder.new
puts g.rakefile.inspect
我收到一条错误消息activesupport-3.1.3/lib/active\u support/secure\u random.rb:5:in`':未初始化常量SecureRandom(NameError)

我不明白这一点。每个类不应该与其他类“独立”吗?这不是面向对象编程的全部要点吗? 现在,如果不是那么重要的话,我怎么才能知道我需要添加哪些依赖项呢?这是某种工作流程来解决的吗?我是否可以通过查看文档来确定要添加哪些依赖项?这个问题与加载路径有关吗?我可以从gem、rails或其他什么加载所有依赖项吗?我就是不明白


doc:github:

要找出AppBuilder中使用的依赖项并不容易,因为大多数依赖项都是在其他地方设置的。因此,大多数情况下,您需要进行一些反复试验,以获得正确的依赖关系

您发布的代码样式不正确。请熟悉如何正确编写ruby代码。给自己买本书,比如《雄辩的ruby》,或者开始阅读ruby博客

ruby中的依赖关系非常简单。您需要的每个文件都将被加载,加载将在文件中循环,然后加载其他需要的文件。只有当所有必需的文件都在
加载路径上时,加载才会起作用。这个加载路径类似于您的系统路径,您可以向其中添加目录,告诉ruby在哪里查找文件

通常,库及其依赖项都有专用的入口点。这些通常都有文档记录,因此如果您使用它们,就可以从一开始就获得所有依赖项。例如,
需要“rails”
才能使用rails,或者
需要“active\u support/all”
如果您只想使用active support。如果你不想让奇瑞选择文件/课程,那么你可以自己找出你需要的其他课程。这一部分与oop无关,它更多的是一个依赖性问题(其他语言有明确的依赖性取消)


在您的情况下,下一步是在文件开头添加
require“securerandom”
,然后检查下一步出现的错误。

我不明白这一点。OOP的要点在于,扩展类应该很容易。不问题是如何找出类依赖于哪些文件,如本例中所示。找到依赖项的跟踪和错误?怎么做?非常感谢你的回答!但是我真的很想知道,在上面的例子中,您应该如何做,以找到以有效的方式添加哪些依赖项。这种事情我觉得很难从书本和博客文章中理解。我改变了我的问题,让它更清楚,我不明白你要我做什么。请帮助:)我仍然有一些问题需要理解,但我现在正在读一本雄辩的ruby书(谢谢推荐),所以也许我会找到我问题的答案。如果没有,我将再次编辑此问题:)