Языки и технологии я изучаю методом умножения шишек на лбу. Набредете на такие вот грабли — хоть немного места на лбу сбережете.
ruby-debug-ide и mkmf
Убунтоиды могут столкнуться с такой бедой: при установке gem ruby-debug-ide установщик жалуется на отсутствие какого-то mkmf и отказывается продолжать. И sudo здесь ни при чем. Не ищите соответсвующий gem, загляните лучше в системный менеджер пакетов (aptitude, Synaptic или Adept или сильномогучие apt-get и dpkg :) ). Кроме вполне логичного для программистов
build-essential
должен быть установлен еще и
ruby[X]-dev
(где [X] — предпочитаемая вами версия Ruby, скорее всего у вас 1.8, т.е. пакет ruby1.8-dev). После его установки повторите команду на установку ruby-debug-ide, всё пойдет как по маслу.
Совет в принципе применяется ко всем библиотекам с native extension в сердце.
Поклонникам jruby придется избегать пакетов с native extensions — ищите версии пакетов, поемеченные
-jruby
.
habtm: id в таблице ассоциаций
habtm — это сокращенно has_and_belongs_to_many (будут проблемы — ищите на форумах и так, и этак). Ему нужна таблица ассоциаций, состоящая
только из id двух связываемых объектов. И если от timestamps легко избавиться, то колонка id в качестве первичного ключа создается без нашего ведома и может попортить немало кровушки таким нубам как я. Чтобы избавиться от нее, не нужно делать одну лишнюю миграцию. Код создания таблицы ассоциации може выглядеть следующим образом:
class CreateOnesTwos < ActiveRecord::Migration
def self.up
create_table :ones_twos, :id => false do |t| # вон он, дополнительный параметр :id
t.references :one
t.references :two
end
end
def self.down
drop_table :ones_twos
end
end