我是Ruby on Rails的新手,并且已经看到人们使用自动样板生成器(如Rails Brick或Rails Composer)来创建样板用户管理系统等。来自不使用的背景#39; t信任自动生成的代码,Rails使用这样的系统是好的/合法的做法。此外,我正在与一家初创公司合作开展项目。使用这种发电机是否合适,这种习惯有多普遍。
P.S。 Mods请注意,这不是要求比较/意见/争议的问题。我对Rails中的一般做法感到好奇,以及它在生产中的使用频率。
答案 0 :(得分:18)
我是Rails Composer的维护者,所以我相信我可以权威地回答这个问题。
我尊重(并分享)从头开始构建的冲动。那是一种健康的冲动。 Rails包含应用程序模板的工具(Rails Composer是一个应用程序模板),因为自动化可以节省时间和精力。对于构建许多Web应用程序的人来说,当您决定自动化该过程时,就会到来。
Rails Composer提供了优于roll-your-own应用程序模板的优势,因为它是开源的,成千上万的开发人员使用了许多代码贡献。随着Rails和宝石的变化,Rails Composer会得到更新,因此您每次都可以获得当前的“参考实现”。它为您提供经过充分测试的入门应用程序,它集成了所有需要调整的部分,如RSpec plus Capybara和FactoryGirl,Flash消息和导航,使用Bootstrap或Foundation前端框架,Devise或OmniAuth进行身份验证,Pundit进行授权,以及开发人员喜欢添加的许多实用宝石(Guard,Pry等)。它允许您选择堆栈(例如,ERB,Haml或Slim),在社区提供选项的范围内提供选择。
如果您担心运行安装脚本的安全性,代码是开源的,并且被成千上万的Rails开发人员使用(您可以在GitHub repo上看到超过2000名观察者)。它纯粹是一个使用Thor库的应用程序模板,虽然理论上有人可能会贡献篡改你文件的代码,但我们永远不会接受像这样的拉取请求。 Rails Composer只提供众所周知的流行宝石,因此您不会面临使用未知宝石的潜在风险。
Rails Composer被广泛使用,特别是由构建大量应用程序的顾问。许多着名的咨询公司都有一个内部应用程序模板(例如,Whilebot Suspenders),还有一些使用Rails Composer或生成自定义应用程序模板的rails_apps_composer gem。仅定期处理一个应用程序(例如,维护一个大项目)的开发人员往往不太熟悉Rails Composer等应用程序模板,但它很受开发大量应用程序的开发人员的欢迎。
Stack Overflow不是意见的地方,所以如果你想要一系列关于Rails应用程序模板优点的意见或辩论,Reddit或Quora可能是一个更好的问题。< / p>
欢迎使用Stack Overflow!我希望您的所有问题都能得到准确及时的回答。
答案 1 :(得分:9)
我是Prelang的开发人员,与您提到的生成器类似。它的不同之处在于添加了数据建模,GitHub集成以及某些功能的更深层配置。像丹尼尔一样,我相信我对此也有一定的权威,并同意他非常完整的答案。
要回答你的问题,Prelang比较新,但它已经被成千上万的开发者使用,从初学者到开发商店。
我想要注意的是,Prelang(以及其他构建器)与您在听到“代码生成”时的传统思维方式不同。在使用Prelang时,我的目标是自动化“Rails开发人员无论如何都会做的一切”。 Prelang确实生成方法/代码,但主要是自动安装Gems,设置配置值,创建模型和运行rails
命令。也就是说,Prelang对于它使用的宝石有所了解,但我为每个功能选择了最受欢迎的宝石,并且一旦我获得更多的牵引力,就可以灵活地选择多条路线。
Prelang还提供了真正的Git提交,因此您可以在项目生成后查看每次提交,从而全面了解您的代码库。这旨在进一步减轻与生成代码相关的问题。
埃里克
答案 2 :(得分:2)
现在大多数宝石都很容易设置,我认为你不需要这样的发电机。毕竟这只是一个品味问题 - 我喜欢使用命令行,我喜欢知道我的代码库中到底是什么。根据我的个人经验,我从未见过有人在专业的Rails开发中使用过这样的东西,但显然有人在那里使用它们。
我能想到这些发生器有意义的一个案例就是你经常引导项目。然而,在这种情况下,我发现现有的发电机不够灵活。例如,Thoughtbot已经构建了自己的应用程序生成器,名为Suspenders,当然包含一组非常固定的宝石等,但它确实给了他们所需要的东西。
作为关于您的安全问题的旁注:对我来说,当您使用许多宝石时所依赖的依赖树是一个更糟糕的安全威胁。例如,在中型Rails项目中,依赖100多颗宝石并不罕见;没有人可以阅读所有这些。你也必须相信所有这些。