gpt4 book ai didi

rspec - 我应该如何构建一个 Rakefile,其中包含一些需要在部署期间运行的任务,以及一些甚至无法在部署期间定义的任务?

转载 作者:行者123 更新时间:2023-12-05 01:08:41 24 4
gpt4 key购买 nike

我正在使用一个简单的(或者我认为的)Sinatra 应用程序,它在应用程序开发/部署周期的不同阶段使用了一些 gem:

  • 用于管理依赖项的 bundle 程序
  • 构建任务的 rake
  • 用于 Assets 预编译的 sprockets
  • 用于测试的 RSpec 2
  • 用于部署的 Capistrano

  • Gemfile 包括 rspectest团体。

    Rakefile 定义了一个 assets:compile将 Sass 转换为 CSS 并将 CoffeeScript 转换为 JavaScript,并连接生成的文件的任务。

    Capistrano 运行 bundle install --without development test以便只在生产服务器上安装生产(和 Assets 编译)所需的 gem。它还运行一个 Cap 任务,最终运行 bundle exec rake assets:compile在服务器上。

    到目前为止一切都很好,但是我想将 RSpec Rake 任务添加到我的 Rakefile 中,这就是问题所在。当我在本地运行时它工作正常,但是当我运行时 cap deploy我在服务器上收到错误消息: no such file to load -- rspec/core/rake_task .

    这是有道理的:当我们安装包时,RSpec 没有安装在服务器上,并且 spec 任务实际上永远不会在那里运行。错误发生只是因为尝试定义任务。

    我可以想到许多选项来处理这个问题,但对我来说似乎没有一个是正确的:
  • 包裹 require 'rspec/core/rake_task'begin...rescue阻止并忽略错误
  • rspec出了test组或以其他方式强制将其安装在服务器上
  • 在部署期间使用不同的 rakefile,只包含 assets:compile任务
  • 定义我自己的 spec仅在调用时需要 RSpec 的任务
  • 在本地而不是在服务器上运行预编译(这些选项中我最喜欢的)

  • 这里的最佳做法是什么?

    最佳答案

    就个人而言,鉴于服务器上不会经常调用 Rake,我会保持简单并使用 rescue :

    begin
    require 'rspec/core/rake_take'
    rescue LoadError
    end

    我不知道为什么使用 Rails 我从来没有遇到过这个问题。

    关于rspec - 我应该如何构建一个 Rakefile,其中包含一些需要在部署期间运行的任务,以及一些甚至无法在部署期间定义的任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16812989/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com