Ruby on Rails или PHP-фреймворк - PullRequest
7 голосов
/ 13 мая 2009

Я способный программист и пишу программное обеспечение для жизни. Я занимаюсь новым проектом по созданию веб-сайта, который имеет множество форм, которые выполняют операции CRUD над базой данных и некоторыми мультимедиа. Я очень хорошо знаком с PHP и Python и написал несколько веб-сайтов на них. Я написал несколько рейковых заданий и несколько сценариев ruby, которые запускаются в производство, но я никогда не писал никаких сайтов на ruby. Я рассматриваю возможность использования Rails, но у меня есть следующие вопросы. Было бы здорово узнать ответы на любые вопросы:

  • Проект должен быть выполнен за месяц и очень чувствителен ко времени. Достаточно ли одного месяца для обучения и создания веб-сайта в RoR?
  • Написание прямых SQL-запросов - одна из моих сильных сторон, и я бы хотел ее использовать. Я слышал, что использование RoR - это боль, если я пишу запросы SQL напрямую. Это правда? Или я могу просто сказать выполнить запрос, дать мне результаты (в виде списка или словаря), а затем я скажу вам, как их отобразить?
  • Я слышал, что RoR выполняет соединения в памяти и не использует возможности, предлагаемые базой данных. Это правильно?
  • Мне нужно создать сайт, который отображает много изображений, видео и апплетов Java. Не помешает ли RoR моей способности сделать это?
  • Я в порядке, используя PHP-фреймворк. Это плохая идея? Если нет, то какая среда PHP ближе всего к Rails с точки зрения удобства программирования.

Ответы [ 19 ]

16 голосов
/ 13 мая 2009

Отвечая на ваши вопросы по порядку:

  1. Вы наверняка могли бы изучить Rails в то время. Также достаточно времени для создания веб-сайта, но достаточно ли времени для вас для создания вашего веб-сайта - это другой вопрос. Лично я не хотел бы попробовать такую ​​вещь в сжатые сроки.
  2. Вы можете писать свои собственные SQL-запросы, но использовать Rails мало смысла, если вы собираетесь обойти все его возможности.
  3. Соединения обычно выполняются как часть запросов к базе данных, генерируемых ActiveRecord.
  4. Использование ROR в значительной степени ортогонально наличию изображений, видео и т. Д. На странице.
  5. Я не использовал его, но CakePHP стремится быть довольно Railsy. Zend и CodeIgniter более популярны, и мне лучше рассказывают люди, которые использовали все три.
6 голосов
/ 13 мая 2009

Проект должен быть выполнен за месяц и очень чувствителен ко времени. 1 месяц достаточно для обучения и построения веб-сайт в RoR?

Учитывая опыт, который вы описываете, я полагаю, что одного месяца для изучения и создания простого приложения (особенно если оно основано на CRUD) должно быть достаточно. Если существует значительный уровень сложности, я не хотел бы изучать новые технологии и создавать сложные сайты за один месяц.

Написание прямого SQL запросы является одной из моих сильных сторон, и я хотел бы использовать это. Я слышал, что RoR это боль, если я пишу SQL запросы напрямую. Это правда? Или может Я просто говорю выполнить запрос, дай мне результаты (в виде списка или словаря) а потом я расскажу как сделать их?

Способ rails состоит в том, чтобы использовать сопоставления объектов ActiveRecord, которые он вам дает (и в основном они работают очень хорошо). Также очень легко написать прямой SQL, если вы этого хотите

ModelName.find_by_sql('your query')

как вы это делаете

Я слышал, что RoR присоединяется в памяти и не использует объекты, предлагаемые базой данных. Является это правильно?

ActiveRecord многое делает для вас, но везде, где производительность является проблемой, как указано выше, вы можете написать свой собственный SQL, чтобы использовать преимущества базы данных.

Мне нужно создать веб-сайт, который отображает много изображений, видео и Java-апплеты. Будет RoR мешать моей способности сделать это?

Не понимаю, почему так должно быть. Существует множество гемов и плагинов, которые помогают с такой функциональностью, поэтому вполне может быть, что много кода уже может быть написано для вас.

Я в порядке используя фреймворк PHP. Это плохо идея? Если нет, то какая платформа PHP ближе всего к рельсам с точки зрения удобство программирования.

Я позволю эксперту PHP ответить на этот бит.

3 голосов
/ 13 мая 2009
  • Проект должен быть выполнен за месяц и очень чувствителен ко времени. Достаточно ли одного месяца для обучения и создания веб-сайта в RoR?

Если это чувствительно ко времени, придерживайтесь того, что вы знаете ... Тем не менее, в Rails есть много плагинов для обработки таких вещей, как загрузка изображений, которые могут сэкономить вам много времени. В Rails есть «генераторы скаффолдов», которые создают базовые CRUD-приложения в одной команде:

./script/generate scaffold title:text description:text when:datetime

.. будет генерировать контроллеры / представления для создания / редактирования / удаления элементов. Затем вы можете легко обернуть вокруг него более привлекательный HTML-код, добавить аутентификацию (через restful_authentication ), и вы можете получить законченное приложение через несколько часов.

  • Написание прямых SQL-запросов - одна из моих сильных сторон, и я хотел бы использовать ее. Я слышал, что использование RoR - это боль, если я пишу запросы SQL напрямую. Это правда? Или я могу просто сказать выполнить запрос, дать мне результаты (в виде списка или словаря), а затем я скажу вам, как их отобразить?

Существует очень немного ситуаций, когда вам нужно писать SQL с ActiveRecord, но вы можете. RoR по-прежнему является кодом Ruby, поэтому вы всегда можете использовать библиотеку MySQL и покончить с ActiveRecord, если вам действительно нужно написать сырой SQL (но, опять же, вы почти наверняка этого не сделаете)

  • Я слышал, что RoR выполняет объединения в памяти и не использует возможности, предоставляемые базой данных. Это правильно?

Нет причин, по которым ActiveRecord не может выполнять JOIN через SQL-запросы, ActiveRecord :: Associations :: ClassMethods упоминает, что ассоциации выполняются через JOIN.

Кроме того, даже если он выполняет JOINs через память, он работает превосходно, несмотря на то, что долго существовал Rails ..

  • Мне нужно создать сайт, который отображает много изображений, видео и Java-апплетов. Не помешает ли RoR моей способности сделать это?

Нет. Это всего лишь кусочки HTML, которые Rails может выводить так же легко, как и любой другой фреймворк.

  • Я в порядке, используя PHP-фреймворк. Это плохая идея? Если нет, то какая среда PHP ближе всего к Rails с точки зрения удобства программирования.

Абсолютно. Если вы не используете Rails, используйте PHP-фреймворк!

Я бы рекомендовал не выбирать фреймворк, основанный на том, «насколько он близок к Rails». PHP - не Ruby. Попытка «портировать» (в некотором роде) фреймворк на другой язык редко работает, равно как и написание фреймворка для этого языка.

Как я прокомментировал ответ Чака, «CodeIgniter и Zend - хорошие веб-фреймворки PHP. CakePHP - хорошая имитация Ruby on Rails» ..

Я обнаружил, что CodeIgniter гораздо больше похож на PHP (в хорошем смысле), его документация также является моим любимым из всех проектов, которые я использовал!

Zend Framework очень модульный, вы можете добавить бит Zend в существующее PHP-приложение или использовать его систему маршрутизации MVC.

CakePHP, похоже, пытается заставить PHP работать как Ruby, а не создает среду, которая прекрасно вписывается в PHP.


Все, что сказано, причина, по которой вы используете Ruby on Rails, - это сообщество (и, следовательно, все плагины и тому подобное, которые вращаются вокруг него).

Например, плагин paperclip чрезвычайно упрощает форму загрузки изображений (вместе с миниатюрами). Чтобы использовать его, вы добавляете (к вашей модели):

has_attached_file :photo, :styles => {:thumb=> "100x100#", :small  => "150x150>" }

Затем, по вашему мнению, где вы хотите разместить форму загрузки, добавьте:

<% form_for :user, :html => { :multipart => true } do |f| %>
  <%= f.file_field :photo%>
<% end %>

Вот и все.


Я бы порекомендовал провести день, делая что-то простое в Rails. Существует бесчисленное множество великолепных учебных пособий ( Railscasts - хороший, случайный пример) и множество книг по нему. Посмотрите, нравится ли вам это, если нет, попробуйте CodeIgniter, Zend или CakePHP (или Django, или Merb, или ... Просто не тратьте целый месяц на попытки фреймворков!)

2 голосов
/ 13 мая 2009

http://www.doctrine -project.org /

У меня был большой успех с доктриной ORM: если вы пишете объектно-ориентированный php, тогда это сделает для вас объект-> отображение базы данных AFAIK, это один из плюсов в структуре django / rails.

Так что это связывает функциональность oop / database следующим образом:

$foo = new User(); // makes a new 'transitory' user object
$foo->name = 'bob'; // works like you'd expect
$foo->save(); // but this pushes it into the database.
  //(There's a 'name' column in the 'User' table already: set up when Doctrine initializes).

& если вам нужен фреймворк, теперь это часть Symfony.


Очень интересно иметь реальный проект по изучению новых технологий или подходов, но можно взять на себя слишком много. Это займет в 5 раз больше времени, чем в технологии, которую вы знаете. Что может быть хорошо - обучение, и результаты могут стоить того. Но не похоже, что это уместно здесь.

2 голосов
/ 13 мая 2009

Rails - это отличный фреймворк, но изучение его и более глубокое знакомство с конструкциями, специфичными для Ruby, может оказаться довольно сложным делом одновременно с конечным сроком в один месяц.

Чтобы войти в среду веб-приложений, я бы рекомендовал использовать среду PHP, если вы уже знакомы с PHP. Хотя это не порт, CakePHP очень похож на Rails. Он создан по образцу Rails и является моей любимой средой PHP. Symfony - это надежный фреймворк, но если вы ищете что-то более подходящее для Rails, я рекомендую вам попробовать CakePHP.

Если вы еще не женаты на использовании Rails или чего-то подобного, я бы порекомендовал Zend Framework. На сегодняшний день это самая полная платформа веб-приложений для PHP.

Все эти фреймворки позволят вам делать все, что вы упомянули. Возможно, будет проще представить их как отдельную группу строительных блоков, чем комплексную операционную систему для вашего веб-сайта, которую вы расширяете с помощью плагинов. Это было бы больше похоже на CMS, как ExpressionEngine. С этими платформами вы можете делать все, что угодно, это просто кодовые базы, из которых вы можете сделать разработку веб-приложений менее утомительной.

Фреймворк Akelos - это PHP-фреймворк, представляющий собой порт Rails, поэтому вас это также может заинтересовать.

Что касается написания SQL-запросов, это возможно с любой средой PHP, но идея этих сред заключается в соглашении над конфигурацией. У каждого есть своя собственная схема ORM для отвода запросов SQL от разработчиков. Хотя это может быть связано с тем фактом, что многие веб-разработчики, по крайней мере, по моему опыту, боятся SQL, как человек, который также любит писать SQL, я действительно ценю огромное количество времени, которое может сэкономить инфраструктура ORM. Опять же, когда приложение разрабатывается, это довольно стандартная практика для профилирования производительности ORM и поиска областей для улучшения. Быстрое создание прототипов - огромная часть фреймворков веб-приложений, поэтому подобные инструменты могут быть для вас помехой. Как уже говорили другие, использование одной из этих платформ может оказаться бессмысленным, если вы просто собираетесь обойти их возможности.

Если вы решите не использовать один из них, в PHP есть множество зрелых проектов, которые помогут вам создать приложение, но поиск и изучение их реализации может занять гораздо больше времени, чем изучение фреймворка.

2 голосов
/ 13 мая 2009

Проект должен быть выполнен за месяц и очень чувствителен ко времени. Достаточно ли одного месяца для обучения и создания веб-сайта в RoR?

Может быть, но это также может усложнить вам жизнь. Я обычно жду проект с расслабленным графиком, чтобы попытаться освоить новую технологию. Если время имеет большое значение, вырежьте ваш любимый язык и сделайте это.

Написание прямых SQL-запросов - одна из моих сильных сторон, и я хотел бы использовать ее. Я слышал, что использование RoR - это боль, если я пишу запросы SQL напрямую. Это правда? Или я могу просто сказать выполнить запрос, дать мне результаты (в виде списка или словаря), а затем я скажу вам, как их отобразить?

Я не являюсь разработчиком Rails, но я знаю, что он использует ActiveRecord. Я уверен, однако, что есть также способ заставить его выполнять необработанные запросы, как это делает большинство ORM. Однако прямо здесь вы идете вразрез с тем, чего хочет от вас фреймворк, и у вас могут возникнуть проблемы.

Я слышал, что RoR выполняет соединения в памяти и не использует возможности, предоставляемые базой данных. Это правильно?

Все, что абстрагирует вас, особенно отношения с базой данных, будет далеко не эффективным. Заранее беспокоиться об этом обычно не нужно, и, как только ваше приложение будет завершено, обычной практикой будет выявление каких-либо особых медленных запросов и повторное выполнение их вручную, если это необходимо.

Мне нужно создать сайт, который отображает много изображений, видео и Java-апплетов. Не помешает ли RoR моей способности сделать это?

Я понятия не имею, почему это так.

Я в порядке, используя PHP-фреймворк. Это плохая идея? Если нет, то какая среда PHP ближе всего к Rails с точки зрения удобства программирования.

CakePHP - безусловно, самая близкая структура к RoR. Он заимствует из многих своих идей. Я использовал его с некоторым успехом в прошлом. CodeIgniter , хотя и не имеет отношения к Rails, также потрясающе, если вы хотите что-то легковесное, которое не заставит вас делать что-то свое.

2 голосов
/ 13 мая 2009

Я в порядке, используя PHP-фреймворк. Это плохая идея? Если нет, то какой PHP рамки ближе всего к Rails с точки зрения удобство программирования.

Я предполагаю, что CakePHP близок к RoR для фреймворка PHP.

Я сам не пробовал Rails, но удивляюсь, если это удобно. Насколько я читал (как парень, который 2 года занимался разработкой Rails, что-то делать не следует), когда вам нужно сделать что-то более сложное, вам, очевидно, придется бороться и взламывать фреймворк.

Существуют и другие фреймворки для Ruby, PHP и Python. Я предлагаю вам немного осмотреться, прежде чем вы решите.

Если вы хотите кодировать на PHP, вы можете попробовать Symfony с Zend Framework.

2 голосов
/ 13 мая 2009

Rails отлично подходит для CRUD.

1 - Если вы уже знакомы с Ruby и MVC, месяц должен подойти. Если нет, то есть чему поучиться.

2 - Rails позволит вам выполнять SQL-запросы, но он действительно настроен на использование ActiveRecord.

3 - Rails предназначен для переключения между типами баз данных, поэтому ActiveRecord многое делает сам по себе. Посмотрите в Ассоциации ActiveRecord для получения дополнительной информации.

4 - Никогда не пробовал Java-апплеты, но остальные работают нормально.

5 - Если вам удобнее работать с PHP-фреймворком, это неплохая идея. Есть даже несколько, которые пытаются воспроизвести множество функций Rails, например CodeIgniter.

Ознакомьтесь с RailsGuides , чтобы лучше узнать обо всем этом.

2 голосов
/ 13 мая 2009

Поскольку у вас есть некоторый опыт работы с Python, вы взглянули на Джанго ?

1 голос
/ 13 мая 2009

Если вы знакомы со структурой Model View Controller, Ruby on Rails не слишком сложен в изучении. Я сам пришел из PHP Zend Framework в Ruby on Rails и действительно нашел облегчение. Мне нравится сама идея соглашения о конфигурации, которую использует Rails. Он сохраняет ваше приложение (и все будущие приложения) хорошо структурированным, что, на мой взгляд, чрезвычайно важно и экономит время.

В настоящее время я программирую на Ruby с Rails около 6-7 месяцев, и мне это очень нравится. Чистый код, ОЧЕНЬ быстрая разработка, это действительно невероятно. Особенно с генератором файлов и миграцией базы данных.

Что касается того, что RoR - это боль при написании необработанных запросов, я не уверен, мне никогда даже не приходилось их писать, но вы уверены, что можете с помощью простого метода. Это не должно быть проблемой.

Когда я начал разрабатывать веб-приложения на Ruby on Rails, я не хотел возвращаться к PHP. Чисто потому, что мне очень нравится то, как работает Rails, соглашения, быстрая разработка, чистый код, согласованная структура и т. Д. И т. Д. И т. Д. Но в наши дни меня время от времени все еще просят клиенты разработать веб-приложение на PHP. Но, на мой взгляд, если я вернусь к Zend Framework, я, вероятно, действительно получу стресс, поскольку считаю его крайне неэффективным. (Это может быть моя вина, я не уверен, но в моих глазах, по сравнению с Rails, ме). Я обнаружил PHP Framework "CakePHP". Насколько мне известно, этот фреймворк ближе всего к Rails, и в настоящее время я использую его для разработки приложений PHP. Это довольно просто и прекрасно работает. У них также есть ОЧЕНЬ хорошая вещь, называемая «кулинарная книга» на их веб-сайте, которая помогает вам быстро начать работу. Поэтому, если бы вы выбрали PHP-фреймворк, я бы лично выбрал CakePHP только потому, что он ближе всего к Rails.

Единственное, что меня немного раздражает в Rails, - это то, что для его установки требуется определенная версия Rails, и эта версия должна быть совместима с определенной версией Ruby. Вам нужно будет освоить Gems, плагины (которые, честно говоря, нетрудно понять). Но наряду с развертыванием, если вы используете Apache 2+, вам нужен Passenger. Также, чтобы быть в безопасности, вы захотите заморозить свои драгоценные камни и тому подобное, чтобы избежать конфликтов со спецификациями серверов и установленными утилитами.

В Ruby on Rails можно изучить гораздо больше, чем просто язык и структуру. PHP довольно прост, просто загрузите, и это работает. Поэтому, возможно, вы захотите ознакомиться с этим и до разработки приложения.

...