Це з досвіду навчання, продовження навчання та написання порівняно простої програми в Rails.
1) Крива навчання
Рейки оманливо прості. Підручники, відеоролики та книги демонструють, наскільки швидко ви можете отримати робочу програму (якщо це некрасиво), але вони справді просто подряпають поверхню. Вони, як правило, сильно покладаються на створення коду та "риштування", що, правда, є хорошим інструментом при навчанні, але швидко переживає свою корисність.
Не помиляйтесь, Рейки важко освоїти. Після того, як ви перейдете основні принципи (докладніше про це пізніше), ви зіткнетеся з головою в стіну, якщо вам потрібно зробити більше, ніж надзвичайно спрощений "демонстраційний додаток" функціональності, який, як ви бачите, рекламували. Ви можете обійтись основними знаннями Рубі під час навчання, але вам швидко потрібно забрати Рубі, або ви залишитеся високим і сухим (а не хорошим видом DRY
), якщо вам потрібно вийти за рамки Рейки.
Рейки - це, як я люблю це любити називати, фарбувати за допомогою програмування чисел . Якщо ви дотримуєтесь 100% домовленостей (тобто залишайтеся в межах ліній і використовуйте кольори, про які вам сказали), ви можете швидко та легко робити гідні програми. Якщо і коли вам доведеться відхилятися, Рейки можуть перейти від вашого найкращого друга до вашого найгіршого ворога.
2) Коли молотком є все, що у вас є ...
Rails дуже добре спрощує програми CRUD. Проблема виникає, коли ваш додаток повинен робити більше, ніж просто читати / писати з бази даних. Тепер для запису остання версія Rails, яку я використав, була 2.3.4, тому, можливо, змінилися зміни з тих пір, але я зіткнувся з основними проблемами, коли змінилися вимоги бізнесу, тому програма повинна була вбудувати в неї невелику систему робочого процесу та інтегруватися з застаріле додаток PHP. Конвенція Rails про "одну форму, одну модель" працює чудово для тривіальних додатків та додатків для введення даних, але не настільки, коли потрібно робити логіку обробки, чи мати робочі процеси, або все, що не є типовим "Користувач вводить дані в кілька текстових полів, хітів "Надіслати" тип речі. Це можна зробити, але це аж ніяк не "просто", а точніше - не було "
Крім того, Rails не любить грати з іншими програмами, які не використовують бажані методи доступу до даних; якщо вам доведеться взаємодіяти з додатком, який не має API стилю "Веб 2.0", вам доведеться обіймати Rails замість нього; я знову говорю з досвіду, оскільки це сталося зі мною.
3) Це нове
Нарешті, Рейлс все ще є «новою дитиною на блоці» у багатьох областях. Це не має значення для особистого використання або типу "Я думаю, що це круто і хочу це навчитися", але говорити як хтось, хто вважає за краще використовувати Рейки на своїй щоденній роботі, якщо ви не перебуваєте в тому місці, де знаходиться Рейлс Широко поширена робота може бути дуже складно як розробник Rails. Це все ще в значній мірі сфера "хіп, нових стартапів" і не є головним гравцем у більшості столичних районів. Ваш пробіг може залежати в цьому плані, але я знаю, що мої рельси (тампа) в основному відсутні.
4) Вогонь і рух
Рейки постійно змінюються. Це і добро, і погано; це добре, тому що громада розвивається та використовує нові концепції. Це погано, оскільки громада розвивається та використовує нові концепції. Для новачків Rails це може бути дуже непосильним, тому що зазвичай, коли ви стикаєтеся з проблемою, і озираєтесь навколо, ви побачите або людей, які рекомендують такий-і-такий дорогоцінний камінь, щоб виправити це, або говорять, що спосіб все одно поганий, і вам не варто ' t використовуйте його, ось кращий спосіб ... і у вас з’явиться список додаткових інструментів для прання, щоб навчитися разом з Rails не відставати від cognoscenti Rails. Такі речі , як Git
, BDD/RSpec
, Cucumber
,Haml/Sass
, і рогівки інших речей все пливуть навколо і підштовхуються, як "правильний спосіб робити справи" в Rails-Land, і, виходячи з досвіду, ви, можливо, вкінці зможете вивчити десяток і більше технологій на додаток до Rails, тому що, використовуючи стандартний інструментарій Rails, він відчуває себе "неправильно".
Тепер це ще більше посилиться за допомогою Rails 3.1, що робить Sass і CoffeeScript для всіх речей за замовчуванням, тож новачок Rails має не тільки вивчити Ruby і Rails, але і Sass (можливо, просто, якщо ви знаєте CSS) та CoffeeScript (не божевільно складно, але, безумовно, достатньо відрізняється від сирого JavaScript) на мінімальному рівні, щоб почати, плюс можна припустити, що Git. Навіть не враховуючи RSpec і друзів, а також десяток і більше дорогоцінних каменів, які ви зазвичай закінчите, це 4 різні речі, які вам доведеться навчитися, перш ніж ви зможете серйозно почати писати програми Rails. Порівняйте це з такою мовою, як C #, або Java, або навіть PHP, де ваші знання HTML / CSS / JavaScript / SQL не зміняться, і вам просто доведеться вивчити саму мову та, можливо, нюанси рамки.