【问题标题】:Ruby on Rails or a PHP frameworkRuby on Rails 或 PHP 框架
【发布时间】:2009-05-12 21:45:57
【问题描述】:

我是一名有能力的程序员,我以编写软件为生。我正在着手一个新项目来构建一个网站,该网站有一堆表单,这些表单在数据库和一些多媒体上执行 CRUD 操作。我非常熟悉 PHP 和 Python,并在其中编写了一些网站。我写了一些 rake 任务和一些在生产环境中运行的 ruby​​ 脚本,但我从来没有用 ruby​​ 写过任何网站。我正在考虑使用 Rails,但我有以下问题。很高兴知道任何/所有这些的答案:

  • 该项目应该在一个月内完成,而且对时间非常敏感。 1 个月的时间足以在 RoR 中学习和建立网站吗?
  • 编写直接 SQL 查询是我的强项之一,我想使用它。我听说如果我直接编写 SQL 查询,使用 RoR 会很痛苦。这是真的?或者我可以说执行一个查询,给我结果(作为一个列表或字典),然后我会告诉你如何呈现它们?
  • 我听说 RoR 确实在内存中连接,并且不使用数据库提供的功能。这是正确的吗?
  • 我需要创建一个显示大量图像、视频和 Java 小程序的网站。 RoR 会妨碍我这样做吗?
  • 我可以使用 PHP 框架。这是一个坏主意吗?如果不是,哪个 PHP 框架在编程便利性方面最接近 Rails。

【问题讨论】:

    标签: php ruby-on-rails web-applications


    【解决方案1】:

    按顺序回答您的问题:

    1. 你当然可以在那个时候学习 Rails。建立一个网站也有足够的时间,但是对于 是否有足够的时间来建立你的 网站是一个不同的问题。我个人不想在紧迫的期限内尝试这样的事情。
    2. 可以编写自己的 SQL 查询,但如果您要解决 Rails 的所有功能,那么使用 Rails 毫无意义。
    3. 联接通常作为 ActiveRecord 生成的数据库查询的一部分完成。
    4. 使用 ROR 与在页面上显示图像、视频等几乎是正交的。
    5. 我没用过,但是 CakePHP 的目标是相当 Railsy。 Zend 和 CodeIgniter 更受欢迎,不过,用过这三种方法的人对我的评价更好。

    【讨论】:

    • CodeIgniter 和 Zend 是很好的 PHP 网络框架。 CakePHP 是一个很好的 Ruby on Rails 仿制品。
    【解决方案2】:

    项目应该在一个月内完成 并且对时间非常敏感。是 1 个月 足以学习和建设 RoR 中的网站?

    鉴于您描述的经验,我想一个月学习和构建一个简单的应用程序(尤其是基于 CRUD 的应用程序)应该足够了。如果复杂程度很高,我会不愿意在一个月内学习一项新技术并交付一个复杂的网站。

    直接编写 SQL 查询是我的优势之一,我 想用它。听说RoR 如果我正在编写 SQL,使用起来很痛苦 直接查询。这是真的?或者可以 我只是说执行一个查询,给我 结果(作为列表或字典) 然后我会告诉你如何渲染 他们?

    rails 方法是使用它为您提供的 ActiveRecord 对象映射(而且大多数情况下效果很好)如果您想这样做,直接编写 SQL 也很容易

    ModelName.find_by_sql('your query')
    

    你是怎么做的

    我听说 RoR 确实加入了 在内存中,不使用 数据库提供的设施。是 这对吗?

    ActiveRecord 为您做了很多工作,但无论性能如何,您都可以编写自己的 SQL 以利用数据库的优势。

    我需要创建一个 显示大量图片的网站, 视频和 Java 小程序。会 RoR 阻碍我这样做的能力?

    我不明白为什么应该这样做。有很多 gem 和插件可以帮助实现这种功能,因此很可能已经为您编写了很多代码。

    我没事 使用 PHP 框架。这是一个坏 主意?如果不是,是哪个 PHP 框架 在以下方面最接近 Rails 编程方便。

    我会让 PHP 专家回答这个问题。

    【讨论】:

      【解决方案3】:
      • 该项目应该在一个月内完成,而且对时间非常敏感。 1 个月的时间足以在 RoR 中学习和建立网站吗?

      如果它对时间敏感,请坚持你所知道的。也就是说,Rails 有很多插件来处理图像上传之类的事情,这可能会为你节省大量时间。 Rails 有“脚手架生成器”,可以在单个命令中创建基本的 CRUD 应用程序:

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

      ..将生成控制器/视图来创建/编辑/删除项目。然后,您可以轻松地将看起来更漂亮的 HTML 包装在它周围,添加身份验证(通过 restful_authentication),并且您可能会在几个小时内完成您的应用程序..

      • 编写直接 SQL 查询是我的强项之一,我想使用它。我听说如果我直接编写 SQL 查询,使用 RoR 会很痛苦。这是真的?或者我可以说执行一个查询,给我结果(作为列表或字典),然后我会告诉你如何呈现它们?

      在极少数情况下您需要使用 ActiveRecord 编写 SQL,但您可以。 RoR 仍然是 Ruby 代码,因此如果您真的需要编写原始 SQL(但几乎肯定不需要),您可以随时使用 MySQL 库并取消 ActiveRecord。

      • 我听说 RoR 确实在内存中加入,并且不使用数据库提供的功能。这是正确的吗?

      没有理由 ActiveRecord 不能通过 SQL 查询执行 JOIN,the ActiveRecord::Associations::ClassMethods 提到通过 JOIN 执行的关联。

      此外,即使它确实通过内存进行 JOIN,但无论 Rails 存在多久,它都运行良好..

      • 我需要创建一个显示大量图像、视频和 Java 小程序的网站。 RoR 会妨碍我这样做吗?

      没有。它们都只是 HTML 的一部分,Rails 可以像任何其他框架一样轻松地输出它们。

      • 我可以使用 PHP 框架。这是一个坏主意吗?如果不是,哪个 PHP 框架在编程便利性方面最接近 Rails。

      当然。如果您不使用 Rails,请使用 PHP 框架!

      我建议不要根据“与 Rails 的接近程度”来选择框架。 PHP 不是 Ruby。 尝试将框架“移植”(以某种方式)到另一种语言很少像为该语言编写框架那样奏效。 p>

      正如我评论 Chuck 的回答,“CodeIgniter 和 Zend 是很好的 PHP 网络框架。CakePHP 是一个很好的 Ruby on Rails 模仿”..

      我发现 CodeIgniter 感觉更像 PHP(以一种很好的方式),它的文档也是我用过的任何项目中我最喜欢的!

      Zend 框架非常模块化,您可以将 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,或.... 只是不要花整个月时间去尝试框架!)

      【讨论】:

        【解决方案4】:

        由于您有一些 Python 经验,您是否看过 Django

        【讨论】:

        • 另外,如果我必须学习除 RoR 之外的其他框架,我会坚持使用 PHP,因为这是我的大部分专业知识所在。我想使用 RoR 只是为了试水。跨度>
        • “我想用 RoR 来试水”那为什么不花一两个小时也用 Django 试水呢?
        【解决方案5】:

        Rails 非常适合 CRUD。

        1 - 如果您已经熟悉 Ruby 和 MVC,一个月应该没问题。如果没有,还有很多东西要学。

        2 - Rails 将允许您执行 SQL 查询,但它确实设置为利用 ActiveRecord。

        3 - Rails 设计用于在数据库类型之间切换,因此 ActiveRecord 可以自己做很多事情。查看 ActiveRecord 关联以获取更多信息。

        4 - 从未尝试过 Java 小程序,但其余的工作正常。

        5 - 如果您更喜欢 PHP 框架,那么这根本不是一个坏主意。甚至有一些尝试复制许多 Rails 功能,例如 CodeIgniter。

        查看RailsGuides 了解有关这一切的更好的想法。

        【讨论】:

          【解决方案6】:

          我可以使用 PHP 框架。这是 一个坏主意?如果没有,哪个 PHP 框架在术语上最接近 Rails 编程方便。

          我猜 CakePHP 接近于 PHP 框架的 RoR。

          我自己没有尝试过 Rails,但想知道它是否方便。据我所知(就像那个花了 2 年时间让 Rails 做一些不应该做的事情的人),当你需要做一些更复杂的事情时,你显然必须对抗和破解框架。

          还有其他适用于 Ruby、PHP 和 Python 的框架。我建议你在决定之前多看看周围。

          如果你想用 PHP 编写代码,你可以试试 Symfony 和 Zend 框架。

          【讨论】:

          • “就像那个花了 2 年时间让 Rails 做一些不该做的事情的人一样”这是让我发布这个问题的文章。
          【解决方案7】:

          该项目应该在一个月内完成,而且对时间非常敏感。在 RoR 中学习和建立网站是否足够 1 个月?

          可能是这样,但它也可能使您的事情变得不必要地困难。我通常会等待一个时间表宽松的项目来尝试学习一项新技术。如果时间紧迫,请找出您最喜欢的语言并完成它。

          编写直接 SQL 查询是我的优势之一,我想使用它。我听说如果我直接编写 SQL 查询,使用 RoR 会很痛苦。这是真的?或者我可以说执行一个查询,给我结果(作为一个列表或字典),然后我会告诉你如何呈现它们?

          我不是 Rails 开发人员,但我知道它使用 ActiveRecord。然而,我确信还有一种方法可以让它像大多数 ORM 一样执行原始查询。然而,你正在与框架想要你做的事情背道而驰,你可能会遇到问题。

          我听说 RoR 确实在内存中连接,并且不使用数据库提供的功能。这是正确的吗?

          任何为您抽象出事物的东西,尤其是数据库关系,都将远非有效。通常不需要事先担心它,一旦您的应用程序完成,通常的做法是识别任何特定的慢查询并在必要时手动重做它们。

          我需要创建一个显示大量图像、视频和 Java 小程序的网站。 RoR 会妨碍我这样做吗?

          我不知道为什么会这样。

          我可以使用 PHP 框架。这是一个坏主意吗?如果不是,哪个PHP框架在编程便利性方面最接近Rails。

          CakePHP 是迄今为止最接近 RoR 的框架。它借鉴了很多想法。我过去使用它取得了一些成功。 CodeIgniter,虽然与 Rails 无关,但如果您想要一些不会强迫您按照自己的方式做任何事情的轻量级的东西,这也很棒。

          【讨论】:

            【解决方案8】:

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

            我在 ORM 学说上取得了巨大的成功:如果您正在编写面向对象的 php,那么它会为您完成对象->数据库记录映射。 AFAIK 这是 django / rails 框架的优点之一。

            所以这会像这样链接 oop/数据库功能:

            $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 倍。没关系 - 学习和结果可能是值得的。但听起来这里不合适。

            【讨论】:

              【解决方案9】:

              Rails 是一个很棒的框架,但是在一个月的最后期限内,学习该框架并更加熟悉特定于 Ruby 的构造可能需要做很多事情。

              要进入 Web 应用程序框架,如果您已经熟悉 PHP,我建议您使用 PHP 框架。虽然不是移植,但 CakePHP 与 Rails 非常相似。它以 Rails 为模型,是我最喜欢的 PHP 框架。 symfony 是一个可靠的框架,但如果你正在寻找更多 Rails 风格的东西,我建议你试试 CakePHP。

              如果您还没有使用 Rails 或类似的东西,我会推荐 Zend 框架。它是迄今为止可用于 PHP 的最全面的 Web 应用程序框架。

              所有这些框架都可以让你做你提到的所有事情。将它们视为一组精选的构建块可能比您使用插件扩展的网站的综合操作系统更容易。这将更类似于像 ExpressionEngine 这样的 CMS。您可以使用这些框架做任何事情,它们只是供您借鉴的代码库,以减少开发 Web 应用程序的繁琐。

              Akelos 框架是一个声称是 Rails 端口的 PHP 框架,因此您可能也对此感兴趣。

              至于编写 SQL 查询,可以使用任何 PHP 框架,但这些框架背后的理念是约定优于配置。每个都有自己的 ORM 方案,以将 SQL 查询从开发人员那里抽象出来。虽然这可能是由于许多 Web 开发人员(至少根据我的经验)害怕 SQL,但作为一个也喜欢编写 SQL 的人,我确实很欣赏 ORM 框架可以节省的大量时间。同样,在开发应用程序时,分析 ORM 的性能并寻找需要改进的地方几乎是标准做法。快速原型设计是 Web 应用程序框架的重要组成部分,因此像这样的工具实际上可能会成为您的障碍。就像其他人所说的那样,如果您只是在他们的设施周围工作,那么使用其中一个框架可能最终毫无意义。

              如果您决定不使用其中之一,PHP 有大量成熟的项目可以帮助您构建应用程序,但寻找这些项目并学习如何实现它们可能比学习框架需要更长的时间。

              【讨论】:

                【解决方案10】:

                IMO 一个月的学习和发布非常紧张(我假设你不是全职),如果你也在学习,你就不会全职。当你更深入时,你就会知道它是怎样的。

                大约一个月前,我在 RoR 和 MVC 之间遇到了同样的困境。几周后(晚上学习),我对 RoR 框架有了足够的了解,但 ruby​​ 语言对我来说很新,客户想要交付,而我仍处于“游乐场/沙盒”阶段

                所以,因为我非常了解 c# 和 .net 框架,并且我可以快速找到资源,因为我已经为 MVC 开放,并且在 2 周内我已经向客户交付了一些东西。

                所以根据我的经验,学习 RoR 一周。如果您发现实际应用程序需要 40 多个小时才能开始,那么请坚持使用 PHP,并在您有更多时间和更少时间限制时执行 RoR。

                不管怎样,祝你好运!!

                【讨论】:

                  【解决方案11】:

                  如果您对模型视图控制器结构感到满意,那么 Ruby on Rails 并不难学。我自己是从 PHP 的 Zend 框架到 Ruby on Rails 的,我真的觉得它很解脱。我喜欢 Rails 使用的约定优于配置的整个想法。它使您的应用程序(以及所有未来的应用程序)保持良好的结构,在我看来,这非常重要并且可以节省时间。

                  目前,我已经使用 Rails 使用 Ruby 编程大约 6 到 7 个月了,我真的很喜欢它。干净的代码,非常快速的开发,这真的令人难以置信。尤其是生成器文件和数据库迁移。

                  至于 RoR 在编写原始查询时会很痛苦,我不确定,我什至不必编写它们,但您肯定可以使用简单的方法。这应该不是问题。

                  一旦我开始使用 Ruby on Rails 开发 Web 应用程序,我就不想回到 PHP。纯粹是因为我非常喜欢 Rails 的工作方式、约定、快速开发、干净的代码、一致的结构等等等等。但是这些天我仍然时不时地被客户要求用 PHP 开发一个 Web 应用程序。但在我看来,如果我回到 Zend Framework,我可能真的会感到压力很大,因为我发现它效率极低。 (这可能是我自己的错,我不确定,但在我看来,与 Rails 相比,嗯)。我发现了 PHP 框架“CakePHP”。据我所知,这个框架是最接近 Rails 的,我目前用它来开发 PHP 应用程序。它非常简单并且效果很好。它在他们的网站上还有一个非常好的东西,称为“食谱”,可以帮助您快速启动和运行。所以如果你要选择一个 PHP 框架,我个人会选择 CakePHP,因为它最接近 Rails。

                  我自己对 Rails 唯一有点恼火的是它需要安装特定版本的 Rails,并且该版本必须与特定版本的 Ruby 兼容。您需要掌握 Gems、Plugins 的窍门(老实说,这些并不难理解)。但是除了部署之外,如果您正在运行 Apache 2+,那么您需要Passenger。另外为了安全起见,您需要冻结您的 gem 和类似的东西,以避免与服务器规范和安装的实用程序发生冲突。

                  就 Ruby on Rails 而言,除了语言和框架之外,还有很多东西需要学习。 PHP 非常简单,只需上传即可。因此,在开发应用程序之前,您可能还想了解这一点。

                  【讨论】:

                    【解决方案12】:

                    我认为 Rails 很棒,它会是我在这样一个项目中的首选,但如果你实际上在紧迫的期限内,并且你是从一开始就使用 Rails,那就不要这样做。跟着你知道的走。 PHP 可能不是最好的,但它是一种非常实用的语言。

                    尽管人们可能会这么说,Rails 确实有一个不平凡的学习曲线,尤其是在您不熟悉 MVC 的情况下。肯定有一种“Rails 方式”来做事,而且来自大多数其他框架,需要一段时间才能掌握。

                    我认为如果你试图匆忙学习 Rails,你只会感到沮丧,而且我担心这会影响你对它的印象。相反,试着在业余时间学习它,或者在一个时间线更宽松的项目上学习。我想你会通过这种方式得到更多。

                    【讨论】:

                      【解决方案13】:

                      我认为增加在一个月内重写您已经知道的内容的复杂性 - 在一个时间敏感的项目上是一个坏主意。在任何“时间敏感”项目中,使用任何您不熟悉的框架/工具可能都是一个糟糕的选择。

                      话虽如此,php 的Zend_Framework 的形式抽象非常可靠。我发现转向 ZF 比 RoR 更容易——我同时尝试了这两种方法。

                      ZF 的文档是公平的——尽管阅读库的实际代码仍然是我最好的文档来源。学习或开始并不难 - 如果您不介意 IRC / stackoverflowing 问题,您应该能够很快学会它。

                      【讨论】:

                      • 我相信他提出的第一个问题已经得到解答。批判先生;)
                      【解决方案14】:

                      不要仅仅因为它看起来很酷就登上 Rails 火车。我知道这几天每个人都在谈论它,但老实说,它真的没有那么特别,你最好使用用你熟悉的语言编写的框架。如果你真的很擅长 SQL,那么学习如何使用 ActiveRecord 比手工编写查询要花更长的时间,而且 ActiveRecord 基本上是 Rails 的一半,这有点违背了使用框架的目的。所以根据你提供的背景信息,我会说使用像 CodeIgniter 这样的 PHP 框架(我自己没有使用过,但我听说它很棒,听起来像你需要的那样)。

                      【讨论】:

                        【解决方案15】:

                        项目应该在一个月内完成 并且对时间非常敏感。是 1 个月 足以学习和建设 RoR 中的网站?

                        正如之前所说,如果截止日期很短,请坚持您所知道的。

                        我可以使用 PHP 框架。这是 一个坏主意?如果没有,哪个 PHP 框架在术语上最接近 Rails 编程方便。

                        CakePHP 非常像 ruby​​,有人告诉我,它是 PHP 程序员进入 Ruby 和 MVC 的一个很好的垫脚石。

                        【讨论】:

                          【解决方案16】:

                          使用 php + Zend 框架,它具有 ror 的所有功能,速度更快

                          ror 很慢,很贵,需要强大的服务器

                          * The project should be done in a month and is very time sensitive. Is 1 month enough for learning with and building a website in RoR?
                          

                          学习 Zend Framework 就够了

                          * Writing direct SQL queries is one of my strengths and I would like to use it. I heard that RoR is a pain to use if I am writing SQL queries directly. Is this true? Or can I just say execute a query, give me the results (as a list or dictionary) and then I will tell you how to render them?
                          

                          应该直接写SQL查询,否则会做很慢且未优化的查询

                          * I am OK using a PHP framework. Is this a bad idea? If not, which PHP framework is closest to Rails in terms of programming convenience.
                          

                          你只需要mvc框架,我给你拿Zend框架

                          【讨论】:

                          • RoR 的性能在过去一年左右得到了极大的提升。它现在优于所有流行的 PHP 框架。
                          【解决方案17】:

                          对于 1 个月的项目,使用您更了解的内容!到目前为止,我一直在使用 Qcodo 和 Qcubed,但您只能从数据库中生成您的界面。任何 PHP 框架都使用 DSL。我喜欢 Python 作为语言,但从未使用过。我昨天在看 Ruby On Rails,它看起来很不错。 RoR 提供了一种编写敏捷 Web 应用程序的新方法,但现在也有了 grails。 Grails 是用 Groovy 编写的,在 JVM 上运行并且是动态语言。 Grails 的优势在于可以使用任何 Java 代码和框架,但具有动态语言的简单性。使用 Grails,您可以做与 Rails 相同的事情,甚至更多。

                          我的建议,使用你更了解的,同时学习 Grails,这就是我现在正在做的。

                          【讨论】:

                            【解决方案18】:

                            是 1 个月 足以学习和建设 RoR 中的网站?

                            是的。

                            编写直接 SQL 查询是其中之一 我的长处,我想用 它。我听说 RoR 使用起来很痛苦 如果我直接编写 SQL 查询。 这是真的?或者我可以说 执行查询,给我结果 (作为列表或字典)然后我 会告诉你如何渲染它们?

                            使用 Rails 编写原始 sql 并不比使用 PHP 更难。返回的对象将是列名/值对的哈希。如果您决定开始使用返回 ActiveRecord 对象(不是普通哈希)的 ActiveRecord,则可能会出现唯一的问题

                            我听说 RoR 确实加入了 内存,不使用设施 由数据库提供。这是 对吗?

                            如果您使用原始 sql,Rails 不应干扰它。

                            我需要创建一个网站 显示大量图片、视频和 Java 小程序。 RoR 会阻碍我的 有能力做到这一点吗?

                            没有。

                            我可以使用 PHP 框架。这是 一个坏主意?如果没有,哪个 PHP 框架在术语上最接近 Rails 编程方便。

                            IDK。

                            我真的很喜欢使用 ActiveRecord,但如果您更喜欢原始 sql,Rails 仍然值得使用。在编写 Ruby 的同时,您将获得良好的 url 处理、大量内置安全性、漂亮的 MVC 架构和漂亮的模板系统,这对许多人来说是一次很好的体验。

                            【讨论】:

                              【解决方案19】:

                              不错的线程 - 每个人都在这里有一些很棒的 cmets。这对我很有用。

                              【讨论】:

                                猜你喜欢
                                • 1970-01-01
                                • 2013-04-23
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 2010-10-31
                                • 2012-03-29
                                • 1970-01-01
                                • 2011-09-11
                                相关资源
                                最近更新 更多