Pull to refresh

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

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

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
Tags:
Hubs:
+4
Comments3

Articles