Что самое главное, что нужно знать о Ruby?

Я новичок в этом языке, и мне нужно знать, какие вещи нужно абсолютно знать, чтобы создать полноценный веб-сайт или веб-приложение с использованием языка программирования Ruby?

В основном Ruby on Rails с Rake и другими инструментами, которые в основном используют Rake.

Обновление: я знаю много других языков, таких как С++, Java, PHP, Perl и т.д. и т.д.

Обновление 2: Это здорово... продолжайте приходить!

Ответы

Ответ 1

Все (кроме false и nil) оценивается true в булевом контексте.

Это отличается от других языков, где пустые конструкции или 0 часто оцениваются как false.

if 0
    puts "0 evaluates to true"
end

Ответ 2

Все - объект. Все.

Ответ 3

Методы неявно возвращают результат последнего оператора.

def foo
  "bar"
end

puts foo # outputs "bar"

Ответ 4

  • Вы можете использовать модули ruby ​​как mixins, где ваш дизайн требует множественного наследования
  • Каждый метод возвращает значение своего последнего оператора как значение метода, хотя вы можете использовать return, где вы хотите быть более явным.
  • Вы можете снова открыть любой класс и добавить к нему методы, называемые патчами обезьян, которые могут быть очень мощными, если их использовать разумно, иначе ад сломается.
  • Вы можете передать блок кода любому методу и работать с ним, например. в рубиновом мире большинство кодеров используют итераторы вместо циклов for.
  • По возможности используйте symbols вместо строк, потому что они эффективны, например. в хэш-ключах

и т.д..

Ответ 5

Строки изменяемы; Символов нет.

Ответ 6

Ruby использует передачу сообщений, а не вызовы функций.

например,

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

Ответ 7

Rack. Все современные веб-серверы и фреймворки Ruby используют протокол Rack. Хотя вы можете сделать веб-приложение Ruby без знания Rack, это даст вам хорошую основу, и это становится все более важным в веб-сообществе Ruby.

Стойка также может стать хорошей отправной точкой для обучения программированию веб-приложений в Ruby, поскольку вы можете начать с самого простого веб-приложения:

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

и вы можете продолжать строить оттуда. После того, как вы понимаете Rack, архитектурные решения в Sinatra, Rails и т.д. Имеют больше смысла.

http://rack.rubyforge.org/

Ответ 8

Почти все - это выражение, которое возвращает значение. Это включает в себя те вещи, которые вы обычно не считаете выражениями, такими как определения классов - определение класса оценивается с последним выражением внутри него. Аналогично, if и case - это выражения, которые оценивают тот же результат, что и последнее выражение в той ветки, в которой была сделана ветка.

Точно то, что они оценивают, если не всегда сразу же очевидно, хотя: def оценивает значение nil, но define_method оценивает Proc, представляющий метод, который он определил. Это в сочетании с тем, что определение класса является выражением, иногда удивляет людей:

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

# => #<Proc:[email protected](irb):18> # NOT nil

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

# => 80

Ответ 9

Если вызывается метод 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

Ответ 10

v 1.9 очень сильно отличается от v 1.8. Код, построенный для 1.8, НЕ гарантированно работает в 1.9, и наоборот.

У меня была целая куча кода, которая работала в версии 1.8, а не в версии 1.9, а затем приходилось иметь дело с двумя машинами, каждая из которых имела разные версии. Не весело.

Обязательно выберите версию (возможно, последнюю, но будьте осторожны, что много примеров кода в блогах в Интернете составляет 1,87, а также второе издание "Программирование Ruby". С тех пор было выпущено третий выпуск Programming Ruby, который охватывает 1.9, и тот, который вы хотите.

Кроме того, если вы вообще похожи на меня, вы будете петь одну из трех песен при программировании:

Ответ 13

A стоит прочитать: -

Топ-5 новых функций в Ruby 1.9

  • YARV - еще одна Ruby VM
  • Волокна
  • Именованные группы Regexp

4. Лямбда-оператор

5.RubyGems и Rake объединяются с Ruby

Ответ 14

ruby-debug - ваш друг. Я, вероятно, использую его больше, чем любой другой камень. Учитывая динамическую природу рубина, трудно точно знать, что делает конкретный фрагмент кода, просматривая текст в вашем редакторе. Просто бросьте "отладчик" перед ним и входите в него.

это также отличный способ узнать, откуда приходит динамически генерируемый метод.

Ответ 15

Вы не можете перегружать operator= так же, как на С++. Вы также не можете имитировать его каким-либо образом, что имеет смысл.

Ответ 16

Я думаю, что люди освещали большинство основ. Вот некоторые продвинутые вещи:

inherited, included, class_eval, instance_eval и:

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

eval является злом. Никогда не используйте его, если вы действительно, действительно, действительно знаете, что делаете.

Ответ 17

Если вы действительно знаете, как программировать, вы уже знаете самые важные вещи, чтобы знать о языке программирования Ruby. Просто следуйте за ними.

Остальное находится в стопке руководств; прочитайте их.

Ответ 18

никто бы никогда не слышал об этом, если бы не Rails?