关于Ruby最重要的事情是什么?

时间:2010-05-28 18:18:39

标签: ruby-on-rails ruby rubygems

我是该语言的新手,我需要知道为了使用Ruby编程语言创建功能齐全的网站或Web应用程序,必须知道的最重要的事情是什么?

Ruby on Rails主要使用Rake和其他主要使用Rake的工具。

更新:我知道许多其他语言,如C ++,Java,PHP,Perl等等....

更新2:这很棒......让他们来吧!

18 个答案:

答案 0 :(得分:12)

一切falsenil除外)在布尔上下文中评估为true

这与空构造或0经常评估为false的其他语言不同。

if 0
    puts "0 evaluates to true"
end

答案 1 :(得分:11)

一切都是对象。一切。

答案 2 :(得分:8)

方法隐式返回最后一个语句的结果。

def foo
  "bar"
end

puts foo # outputs "bar"

答案 3 :(得分:7)

  1. 您可以将ruby模块用作设计需要多重继承的mixin
  2. 每个方法都返回其最后一个语句的值作为方法的值,尽管您可以使用return来更明确地显示它。
  3. 你可以再次打开任何一个类,并添加一些方法,称为猴子修补,如果合理使用可能会非常强大,否则会破坏。
  4. 您可以将一段代码传递给任何方法并对其进行操作,例如:在ruby世界中,大多数时候编码器使用迭代器而不是for循环。
  5. 尽可能使用symbols代替字符串,因为它们是有效的,例如在哈希键中
  6. 等。

答案 4 :(得分:7)

字符串是可变的;符号不是。

答案 5 :(得分:5)

Ruby使用消息传递,而不是函数调用。

例如,

# These are all the same:
5 + 3
5.+(3)
5.send(:+, 3)

答案 6 :(得分:4)

机架。所有现代Ruby Web服务器和框架都使用Rack协议。虽然您可以在不了解Rack的情况下制作Ruby Web应用程序,但它将为您提供良好的基础,并且它在Ruby Web社区中变得越来越重要。

Rack也可以成为学习使用Ruby编写Web应用程序的良好起点,因为您可以从最简单的Web应用程序开始:

run lambda { |env| [200, {}, "hello world"] }

你可以从那里继续建设。在了解Rack之后,Sinatra,Rails等中的架构决策更有意义。

http://rack.rubyforge.org/

答案 7 :(得分:3)

几乎所有东西都是一个返回值的表达式。这包括您通常不会将其视为表达式的内容,例如类定义 - 类定义将计算其内部的最后一个表达式。同样,ifcase是与任何分支中的最后一个表达式计算相同结果的表达式。

他们评估的确切内容如果并非总是显而易见的话:def求值为nil,但define_method求值为Proc,代表它定义的方法。这与以下事实相结合:类定义是一种表达方式,有时令人惊讶:

class A
  define_method(:foo) {"hello"}
end

# => #<Proc:0x0001d718@(irb):18> # NOT nil

class A
  define_method(:bar) {"hello"}
  FAVORITE_NUMBER = 80
end

# => 80

答案 8 :(得分:2)

如果调用Ruby不知道的方法,Ruby将调用method_missing并附上详细信息。

class MyClass
  def method_missing(method_name, *args)
    puts "Method #{method_name} called with arguments #{args.join(', ')}"
  end
end

my_instance = MyClass.new
my_instance.undefined_method(4, :blah)  # => Method undefined_method called with arguments 4, blah

答案 9 :(得分:2)

v 1.9与v 1.8非常不同。为1.8构建的代码 NOT 保证在1.9中工作,反之亦然。

我有一大堆代码在v 1.8中工作但在1.9版本中没有,然后不得不处理两台机器,每台机器上都有不同的版本。不好玩。

确保选择一个版本(可能是最新版本,但要警惕网上博客中的大量示例代码是1.87,编程Ruby的第二版也是如此。自那时起已发布a third edition of Programming Ruby涵盖1.9,这就是你想要的那个。

另外,如果你像我一样,你会在编程时唱三首歌中的一首:

答案 10 :(得分:1)

irb,pp,lp&amp; ap是非常有用的魔术词! ;)

  1. http://github.com/oggy/looksee = lp
  2. http://github.com/michaeldv/awesome_print = ap

答案 11 :(得分:1)

不要滥用猴子补丁。 Ruby使它变得简单,但它可能会受到伤害。

另见Monkey-patching Vs. S.O.L.I.D. principles?

答案 12 :(得分:1)

值得全面阅读: -

Top 5 New Features in Ruby 1.9

  1. YARV - 又一个Ruby VM
  2. 纤维
  3. 名为Regexp Groups
  4. 4.The Lambda Operator

    5.RubyGems和Rake与Ruby合并

答案 13 :(得分:1)

ruby​​-debug是你的朋友。我可能比任何其他宝石都使用它更多。鉴于ruby的动态特性,通过查看编辑器中的文本很难确切知道特定代码片段的作用。只需在它前面放一个“调试器”并进入它。

这也是了解动态生成方法的来源的好方法。

答案 14 :(得分:0)

你不能像在C ++中那样重载operator=。你也无法以任何有意义的方式模拟它。

答案 15 :(得分:0)

我认为人们已经涵盖了大部分基础知识。这是一些高级的东西:

inheritedincludedclass_evalinstance_eval和:

@a = "something"
class << @a
  def moo
    puts "moo"
  end
end
@a.moo
@b = "something else"
@b.moo

eval是邪恶的。永远不要使用它,除非你真的,真的真的知道你在做什么。

答案 16 :(得分:-2)

如果您真的知道如何编程,那么您已经了解了有关Ruby编程语言的最重要的事情。跟着他们。

其余的是手册堆栈;读他们。

答案 17 :(得分:-11)

如果不是Rails,没有人会听说过它吗?