【问题标题】:Setting up rails dev env设置 Rails 开发环境
【发布时间】:2017-02-12 22:59:21
【问题描述】:

当我启动一个 Rails 应用程序时,我通常会通过相同的过程来设置我的开发环境。添加pry-byebug 或各种guard-* gems,并初始化一个Guardfile

有没有更好的方法来自动化这个过程?

我想到的一些想法:

  • 创建 rake 任务,将条目添加到 Gemfile、运行 bundle installbundle exec guard init livereload 等...
  • 创建一个单独的命令行应用程序来生成正确的文件并运行正确的 shell 命令。

还有其他更简单的方法吗?

【问题讨论】:

    标签: ruby-on-rails developer-tools


    【解决方案1】:

    您可以使用here 中描述的模板方法。您创建一个名为 template.rb 的文件,其中包含所需的 gem 和命令。然后你用

    创建一个新的rails应用
    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
    

    我发现另一种更简单的方法是维护一个 github 存储库,该存储库包含您在一个简单的 Rails 应用程序中想要的所有内容。然后,当您想创建新应用程序时,只需将 git pull 放入文件夹即可。您唯一需要覆盖的是application.rb中的应用名称

    这里是github repo,它是两者的结合,它适用于在 Mac 上编程,但很容易更改。

    【讨论】:

    • 是否可以在模板中添加rails开关,例如--skip-spring?我知道您可以将这些添加到您的 ~/.railsrc 文件中,但好奇是否可以在模板中添加这些内容?
    • 我实际上没有尝试过,所以我不想评论它。我想它会起作用。
    • guides.rubyonrails.org/… 你可以在模板中“问”一个问题,如果答案是肯定的,也许只是删除所有与弹簧相关的东西?
    【解决方案2】:

    请参阅Iceman's answer 了解更多信息。

    使用 rails application templates 是一个不错的选择。

    例如,如果您想启动并运行 guard-livereloadpry-byebug 并快速构建 Post 资源,那么保存在 ~/sandboxy.rb 中的以下应用程序模板(它只是一个 ruby​​ 文件)将起作用:

    gem_group :development do
      gem 'pry-byebug'
      gem 'guard-livereload'
    end
    
    
    run 'bundle exec guard init livereload'
    
    after_bundle do
      git :init
      git add: "."
      git commit: %Q{ -m 'Initial commit' }
    end
    
    generate(:scaffold, "post title body:text")
    route "root to: 'posts#index'"
    rails_command("db:migrate")
    
    git add: '.'
    git commit: %Q{ -m 'Scaffold a post' }
    

    然后你可以使用以下命令生成一个新的应用程序:

    rails new some_app -m ~/sandbox.rb
    

    【讨论】: