我想使用比 Rails 更轻的框架(Sinatra/Ramaze/Camping),但我担心这样做我将无法使用许多以插件形式为 Rails 量身定制的共享库。这是一个主要问题还是这些插件中的大多数都可以在不同的 Ruby 框架中使用?
使用 Rails 以外的 Ruby 框架还有其他潜在的缺点吗?
我想使用比 Rails 更轻的框架(Sinatra/Ramaze/Camping),但我担心这样做我将无法使用许多以插件形式为 Rails 量身定制的共享库。这是一个主要问题还是这些插件中的大多数都可以在不同的 Ruby 框架中使用?
使用 Rails 以外的 Ruby 框架还有其他潜在的缺点吗?
你仍然可以在你提到的所有框架中使用gems,所以很多东西都是可重用的。想换一个新的ORM,没问题。想要一个花哨的 shmacy 语法高亮,没问题。Rails 一直在大力推动从旧的插件模型转向专门使用 gems。
如果其他框架之一适合您的需求,最好使用它。请记住,在文档和示例方面,rails 有更多内容。
如果我正在学习 Ruby 并想尝试一个 Web 框架,我可能会选择 Rails,不是因为它更好,而是因为它有更好的工具和文档。
Rails 使用的大多数 Ruby 模块(甚至 ActiveRecord)都可以在没有 Rails 的情况下使用。但是这样你就失去了 Rails 提供的集成的额外好处。您可能需要更加努力地将 Ruby 模块粘合到您选择的框架上。另请注意,大多数关于 Rails 使用的 Ruby 模块的文档只告诉您如何在 Rails 中使用该模块。
网络效应起到了一定的作用。
当您使用其他框架(如 sinatra、camping 等)时出现的一个问题是,rails 为您的应用程序中的文件提供了一种经过验证的结构。较小的框架是相当开放和免费的。
当您与多个开发人员一起工作时,这可能是一个不利因素,因为您需要就创建约定进行对话,而不是简单地遵循它们。
如果您使用 Ruby 不到一年,请坚持使用 Rails,除非您有一个非常明确的需求,并且可以更好地由其他框架之一处理。
较轻的框架,尤其是 Sinatra,往往受到那些确切知道他们需要什么并且无法承受未使用代码带来任何额外开销的人的欢迎。本质上,你选择了你的工具链,而不是通常被 Rails 给你的东西所困。(是的,在 Rails 中,您可以用其他库替换 ActiveRecord 等,但这并不容易。)因此,较轻的框架为您提供了更多的自由,但在许多情况下您还有很多工作要做。
我认为除了 ActiveRecord 插件(例如acts_as_nested_set 等)之外,没有任何 Rails 插件可以开箱即用,它们仍然需要一些管道工作(设置 $LOAD_PATH 并需要正确的文件)。我会推荐用于 ORM 的DataMapper,它不仅比 ActiveRecord 快得多,而且它还非常模块化构建,并且插件是您可以轻松安装的实际宝石。不同的是,ActiveRecord 插件大多是猴子补丁,每个新版本都会中断。
Sinatra 没有任何“好东西”,没有 Rakefile,没有骨架,没有脚本/生成,但实际上这就是它的目的。你可以逐渐“插入”所有额外的东西。还有一些带有一些基本布局和默认设置的 sinatra 应用程序框架,您可能会发现这些很有用。