如果我学习Sinatra或Padrino,这对我使用 Ruby on Rails 有帮助吗?
我认为对于所有这些我需要更好地了解 Ruby 本身,但是(比如说)Padrino 是否直接转化为我将在 Ruby on Rails 中使用的技能,还是间接的?
我是一名 PHP 程序员,但是,由于我使用的 PHP 框架是 Ruby on Rails 的克隆,我发现它并不太难。
您不能跳过学习 Ruby 的步骤,因为每个 Ruby MVC 都对其进行了扩展,如果您必须进行一些重要的自定义/优化,您将在 Ruby 中进行。
我的建议是学习 Ruby 基础(变量、块、模块、哈希等),在现实世界中使用 Ruby on Rails,学习Rack,然后选择 Ruby 世界中最适合您需求的“部分”。
这可能是一个更具争议性的观点,我承认对这两者仍然是新手,但作为一个刚刚在 Sinatra 上花了一周然后又转向 Rails 的人,我建议直接使用 Rails。最初,似乎还有很多关于 Rails 的知识要学习,但如果你要写一些比较复杂的东西,你最终会转向 Rails,而且从 Rails 中“学习”你需要的东西就更少了编写一个 Sinatra 应用程序,而不是重新学习用 Rails 方式做的事情。当事实证明您在 Sinatra 中开始的项目毕竟最好在 Rails 中完成时(这发生在我身上),您就免去了不得不换档的痛苦。
这确实意味着在 Rails 上跟上速度需要更长的时间。我建议从Michael Hartl 的教程和官方指南开始。但是,我的建议专门针对已经知道如何开发 Web 应用程序并且比初学者更有可能拥有更复杂项目的现有开发人员。刚接触 Web 应用程序设计的人可能会非常欣赏构建基本 Sinatra 应用程序所带来的直接满足感,但似乎不是你。
经验丰富的开发人员可能会争辩说,您绝对可以在 Sinatra 中编写“中等复杂”的应用程序,他们是对的。我认为 Sinatra 的优势在于为有经验的开发人员提供后备,他们希望在没有 Rails '开销'的情况下淘汰快速应用程序,而不是作为基于 Ruby/Rails 的 Web 应用程序开发的介绍。
Padrino 基于 Sinatra,而 Sinatra 又基于 Rack,后者也是在 Rails 中实现的相同 ruby Web 服务器接口。所以是的,它们有一些共同的特点,但是不,如果你以前不学习 Ruby,学习 Sinatra 对你学习 Rails 没有多大帮助。
如果您在熟悉 MVC、模板和模型之前使用过 Web 框架。您现在需要了解的是特定于框架的语法,因此您需要直接使用您想学习的框架。
Rails 和 Sinatra 共享一些属于 Ruby 生态系统的共同原则和习惯。但是您需要先学习 Ruby 才能更好地理解这些框架。
不要假设“学习 Ruby”步骤是可选任务。
我先做了 Rails + Bootstrap,虽然我最后的交付物非常有光泽,但我的定制和升级能力真的很不稳定,而且真的很慢。从那里我转向了 Ruby 语言语法,一些 _why 书籍和诸如此类的东西,这让我理解了一些最初只是作为“魔法子弹”出现的东西。在与 Ruby 相处了一段时间后,我在 Sinatra 转了转,这真的很有趣。Sinatra 使得通过单页代码推送具有功能齐全的网页的本地服务器成为可能!它使我能够以非常亲密的方式尝试数据库和数据映射器。目前我已经回到 Rails 了,比如脚手架、模型生成、控制器生成等等……这些东西现在以完全不同的方式变魔术了。所以我说:
导轨
红宝石语法
辛纳特拉
导轨
冲洗,重复...
我不认为 Rails 是使用 Ruby 的 Web 开发人员有保证的最终目的地(尽管它很可能 (: )。我曾与一家使用 Ruby 而不是 Rails 用于 Web 应用程序的软件公司合作。我开始走类似的道路你(PHP)。我想使用 Ruby 进行开发,并开始研究 Rails,但发现它非常令人生畏。我开始学习基本的 Ruby 东西,在这个过程的早期,我发现了 Sinatra。我从一开始就喜欢它。学习使用 Sinatra 让我能够一块一块地添加各种宝石,如 ORM 或身份验证,看看它们是如何单独工作的。在使用 Sinatra 的早期应用程序中,“移动部件”要少得多,对我来说,这是首选。我与很多 Rails 人员进行交互,并且从我从我们的谈话中收集到的所有信息来看,我认为现在使用 Rails 开发一个项目对我来说会很轻松。
所以我的两分钱是,对于某些人来说,首先学习 Sinatra 可能会非常有帮助。但是不同的人学习方式不同,所以我认为这个问题没有一个万能的答案。
精益 Sinatra,然后是 Rails。
Rails 有很多内置的“魔法”,这意味着你不需要知道任何东西是如何运行的。
接下来,当您决定使用 Rails 时,您将对实际发生的事情有更好的了解。“魔法”依然存在;您只是对它的工作方式有了更好的了解。这样,如果出现问题,您将更好地了解如何修复它。
祝你好运!
如果您想学习 Rails,一个好方法是遵循此博客文章中绘制的路线图。这是我使用的,这是一个很好的开始。显然,如果您已经了解 PHP,那么您很可能会跳过一些步骤,但总的来说,这是一个非常好的方法来学习 Rails http://techiferous.com/2010/07/roadmap-for-learning-rails /
只是想补充一下我的观点,是的,学习 Sinatra 或 Padrino 肯定会帮助您学习 Rails。从某种意义上说,它将使从 PHP(或其他)到 Rails 的过渡变得不那么令人生畏。正如 wuliwong 所说,Sinatra 和 Padrino 远没有 Rails 复杂。事实上,在我个人看来,Rails 太复杂了,Rails 中的路由有点像噩梦,但我们不要走神。
此外,虽然不学习 Ruby 就无法学习 Rails,但在学习 Rails(或 Sinatra/Padrino)时,没有任何理由不能学习 Ruby,这是一种学习语言的有趣方式。
我直接从 Rails 开始,完全不了解 Ruby,来自 PHP。在那里做了很多教程,买了几本书并继续努力。在使用 Rails 大约 7 个月后,我搬到 Padrino 来构建一个 API,并立即喜欢它与 Rails 相比的简单性。
一旦你做得很好,Rails 就会有很多很棒的高端魔法,但是当你刚开始的时候,它会非常强大。Sinatra/Padrino 允许您从更小、更容易开始并不断添加。
祝你好运!