我想在Ruby中以编程方式创建自定义Rails 5.x应用程序。给定应用程序的规范,我想生成一个包含该应用程序的Rails应用程序文件夹。我可以想到一些这样做的方法,但我不确定哪个是惯用的Rails方法。
理想情况下,我想要下面(5)中描述的方法。 1-4是我尝试过的解决方法,但如果可行的话,我更喜欢程序化方法。
这里的例子是众所周知的博客应用程序:
使用系统命令:
`# my_app_maker.rb`
`rails new blog`
`cd blog`
`rails generate resource Post title:string body:text`
`rails db:migrate`
`# <use a previously created template to modify the controller, layouts and views based on the app specification>`
或者,我可以做类似的事情,但使用脚手架,然后根据需要修改模板。
使用发电机或发动机。我不知道究竟是怎么做到的。
预先创建Rails应用程序并进行模板化,然后使用它来生成Rails应用程序。
理想情况下,我希望API能够以编程方式完成此操作。类似的东西:
app = Rails::App.new('blog', 'path/to/save/app')
post = app.resources.add('Post')
post.controllers.add_actions(['index', 'new']
# ...
最常用的方法是什么?
答案 0 :(得分:2)
根据我的经验, rails应用程序模板非常适用于此特定工作 我认为这正是您所需要的:一个特殊的API,包装常见的系统命令,以创建程序化的新rails应用程序。
它们是生成整个rails应用程序的生成器。
您只需将命令放在ruby文件中,然后使用以下命令创建应用程序:
$ rails new blog -m ~/template.rb
以下是指南中的示例:
# template.rb
generate(:scaffold, "person name:string")
route "root to: 'people#index'"
rails_command("db:migrate")
after_bundle do
git :init
git add: "."
git commit: %Q{ -m 'Initial commit' }
end
Creating and Customizing Rails Generators & Templates guide提供了有关生成器一般如何工作的大量解释,Rails Application Templates guide详细说明了可用于应用程序模板的API。
另一个好的资源是查看Thoughtbot的suspenders gem的实现。它是一个使用尽管用于引导新项目的rails模板。
我自己创建了一个rails生成器来引导新的应用程序,我需要在所有项目和常见配置中使用宝石。在创建新项目时,它为我节省了大量时间。