Как стать автором
Обновить

Пара граблей в Ruby [on Rails] (absolute noob's guide)

Чулан
Языки и технологии я изучаю методом умножения шишек на лбу. Набредете на такие вот грабли — хоть немного места на лбу сбережете.

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
Теги:rubyrailsграбли
Хабы: Чулан
Всего голосов 8: ↑6 и ↓2+4
Просмотры340

Похожие публикации

Лучшие публикации за сутки