Комментарии 41
Надеюсь на этом Вы не остановитесь? (-:
Спасибо!
Спасибо!
+1
Думаю, что если будет интерес, то обязательно напишу еще.
+1
Полтора года на рельсах, а об этих гемах и не знал О_о Спасибо, полезно!
0
Когда начал заниматься рельсами, вопрос внешних ключей выплыл одним из первых. Много гуглил foreigner выплыл практически сразу. Но после прочтения львиной доли выборки гугла согласился, что это не совсем реилсвей и этого функционала не зря нет в мейнстриме.
В общем как всегда, есть линия партия, а есть джемы которые эту линию партии корректирует, чем пользоваться решать стоит толкаясь от задачи.
В общем как всегда, есть линия партия, а есть джемы которые эту линию партии корректирует, чем пользоваться решать стоит толкаясь от задачи.
+1
Спасибо, о многих гемах не знал.
0
Есть такой сайт Ruby Toolbox Там есть много интересного про гемы и проекты — особенно радует возможность посмотреть тенденции «популярности» того или иного гема. Все это категоризировано.
+2
А вот мой джентельменский набор:
authlogic — авторизация пользователей
paperclip — загрузка и обработка картинок
enum_column3 — поддержка enum для MySQL
will_paginate — постраничный пэйджинг для отображения данных
delayed_job — фоновая обработка любых заданий
authlogic — авторизация пользователей
paperclip — загрузка и обработка картинок
enum_column3 — поддержка enum для MySQL
will_paginate — постраничный пэйджинг для отображения данных
delayed_job — фоновая обработка любых заданий
-1
кстати почему authlogic, а не devise например?
+1
и paperclip, а не carrierwave?
+2
более того. will_paginate, а не kaminari? delayed_job, а не resque? а аутентификацию через логин пароль уже даже omniauth со специальным провайдером умеют.
Имхо, описывать гемы для рельсов — всегда чревато. в отличие от django, тут есть выбор. и он всегда вызывает холиворы.
Имхо, описывать гемы для рельсов — всегда чревато. в отличие от django, тут есть выбор. и он всегда вызывает холиворы.
+3
Не холивары, а обсуждения.
+1
Согласен, поэтому я планировал не затрагивать потенциально холиварные гемы, а писать только о специфических гемах, аналогов которых либо нет, либо они не очень поддерживаются в данный момент.
0
Из специфичных гемов могу посоветовать осветить:
- * draper — позволяет отделить модель предметной области от её представления, в качестве приятного бонуса получаем очень чистые представления
- * cells — незаменимая штука для борьбы с жирными контроллерами (которые помимо основных данных, выбирают ещё кучу сопутствующих из различных моделей)
- * trucker — очень полезная штука для переноса данных из унаследованной базы данных
- * metric_fu — помогает отслеживать динамику качества кода вашего проекта с помощью кучи других гемов, считающих разнообразные метрики
+1
Для конфигураций порекомендую гем github.com/kaize/configus
0
Разрешите полюбопытствовать в целях повышения кругозора
Почему тут не def up?
class AddDeletedToTasks << ActiveRecord::Migration
def change
Почему тут не def up?
+1
для почты — mailcatcher
для конфигурации я делал свое вроде удобное творенье — взгляните github.com/homakov/configit
для конфигурации я делал свое вроде удобное творенье — взгляните github.com/homakov/configit
0
в песочнице есть статья про carrierwave & paperclip
0
Я предлагаю использовать вместо foreigner более функциональный аналог — schema_plus.
0
В Rails есть стандартный метод belongs_to, его можно использовать в миграциях тоже, соответственно от гема foreigner никакого толку я не вижу. Пример использования belongs_to в миграциях:
change_table :company_profiles do |t|
t.belongs_to :user
end
-3
А где про это можно почитать, что-то в доках не нашел ничего.
0
Эм, ну так это алиас метода references, ключей он не создает в схеме.
+2
Возможно, я вас неправильно понял.
api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/TableDefinition.html#method-i-column
api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/TableDefinition.html#method-i-column
0
Как не создает? Проверьте. Запись t.belongs_to :user создаст в таблице company_profiles foreign_key user_id типа integer. Все создается
-1
Окей, смотрите. Вот такая миграция.
Смотрим через любой менеджер (у меня это Sequel Pro):
Вы видите внешние ключи? А то, что создала миграция — это просто поле, в которой хранится айдишник поста.
Вобщем, прочтите сперва хотя бы это.
class CreateComments < ActiveRecord::Migration
def change
create_table :comments do |t|
t.text :content
t.belongs_to :post
t.timestamps
end
end
end
Смотрим через любой менеджер (у меня это Sequel Pro):
Вы видите внешние ключи? А то, что создала миграция — это просто поле, в которой хранится айдишник поста.
Вобщем, прочтите сперва хотя бы это.
0
Для полиморфной связи можно заюзать:
В rails 3 если этот код написать в self.change, то миграцию на down не нужно будет писать вовсе, так что, я бы сказал, в foreigner не преимущества, а только недостатки.
t.belongs_to :user, :polymorphic => true
В rails 3 если этот код написать в self.change, то миграцию на down не нужно будет писать вовсе, так что, я бы сказал, в foreigner не преимущества, а только недостатки.
-3
Вместо immortal лучше использовать acts_as_archive или acts_as_soft_deletable, который перемещает запись в другую таблицу вместо того, чтобы помечать её удаленной, ибо если запись оставить и только пометить как удаленную, то потом могут из ниоткуда вылезти очень странные артефакты. Сталкивались, знаем.
И, кстати, ещё один камень в огород will_paginate: если вы работаете с MongoDB — то лучше использовать Kaminari, ибо WillPaginate с монгой не работает.
Такие дела.
И, кстати, ещё один камень в огород will_paginate: если вы работаете с MongoDB — то лучше использовать Kaminari, ибо WillPaginate с монгой не работает.
Такие дела.
0
Хорошая альтернатива letter_opener => mailtrap.io/ он позволяет дебажить стэйджинги да и расшарить результат легче.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
5 гемов на все случаи жизни