过度提交 RailsS​​chemaUpToDate 在 --run 时通过,但在提交时失败

2024-07-04

我遇到了一个奇怪的问题overcommit and Rails 5.0.2应用程序与ruby 2.4.0 :

$ overcommit --run
Running pre-commit hooks
Check if database schema is up to date..........[RailsSchemaUpToDate] OK
Check YAML syntax........................................[YamlSyntax] OK
Check Gemfile dependencies..............................[BundleCheck] OK
Check for vulnerable versions of gems...................[BundleAudit] OK
Analyze with RuboCop........................................[RuboCop] OK
Analyze with haml-lint.....................................[HamlLint] OK

✓ All pre-commit hooks passed
$ git ci -m "Overcommit and Linters added"
Running pre-commit hooks
Check if database schema is up to date..........[RailsSchemaUpToDate] FAILED
It looks like you're adding a migration, but did not update the schema file
Check YAML syntax........................................[YamlSyntax] OK
Check Gemfile dependencies..............................[BundleCheck] OK
Check for vulnerable versions of gems...................[BundleAudit] OK
Analyze with RuboCop........................................[RuboCop] OK
Analyze with haml-lint.....................................[HamlLint] OK

✗ One or more pre-commit hooks failed

这是我的相关部分Gemfile:

group :lint do
  gem 'overcommit', '~> 0.41', require: false  # hook event pre-commit, pre-push
  gem 'brakeman', '~> 3.7.2', require: false  # A static analysis security vulnerability scanner
  gem 'haml-lint', '~> 0.26', require: false  # Syntax checker for HAML
  gem 'ruby_css_lint', '~> 0.1', require: false  # Syntax checker for CSS
  gem 'rubocop', '~> 0.50', require: false  # A Ruby static code analyzer
  gem 'bundler-audit', '~> 0.6'  # Check dependencies
end

In my .overcommit.yml I have:

PreCommit:
  ALL:
    exclude:
      - 'bin/**'
      - 'public/**'
      - 'vendor/**'
  # ...

  # Migration Check
  RailsSchemaUpToDate:
    enabled: true
    on_warn: fail

我的 db 文件夹结构是:

+-- db
| +-- seeds.rb
| +-- migrate
  | +-- 20170922082256_devise_create_users.rb
  | +-- 20170922084050_create_fans.rb
| +-- schema.rb

这是我的相关部分db/schema.rb:

ActiveRecord::Schema.define(version: 20170922084050) do
# ...
end

我尝试降级到ruby 2.3.1但我仍然遇到同样的问题。

有人遇到同样的问题吗?


我其实想通了。 看起来overcommit --run针对整个项目运行(除了未暂存提交的更改),而预提交挂钩仅在要提交的更改上触发。

我在该提交中添加了所有的短绒,我跑了bundle exec rubocop --auto-correct排除db/schema.rb in my .rubocop.yml对于所有警察。

这导致了存在migration_files(之前编辑的迁移文件)没有schema_files(没有进行任何更改schema.rb), so:

if migration_files.any? && schema_files.none?

发现引发了错误来源由布莱恩链接 https://github.com/brigade/overcommit/blob/master/lib/overcommit/hook/pre_commit/rails_schema_up_to_date.rb#L8.

因此,我刚刚承诺禁用过度使用,并且从下一次提交开始,此错误不再重现

$ OVERCOMMIT_DISABLED=1 git ci -m "Overcommit and Linters added"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

过度提交 RailsS​​chemaUpToDate 在 --run 时通过,但在提交时失败 的相关文章

  • Postgres / Rails Active Record -- 查询舍入浮点值

    我在 Rails 应用程序中使用 Postgres 将纬度 经度作为浮点值存储在数据库中 我希望能够比较位置的纬度 经度 但我只知道如何做到完全相等 Location where lat lat lon lon 我的问题是 我希望 Post
  • 如何在Rails启动时创建线程?

    我试图在 Rails 启动时创建一个线程 该线程将在应用程序的整个生命周期中运行 奇怪的是 我已经将其与我正在运行的另一个线程一起使用了 我复制了该 工作 代码并将其用作新线程的新代码的样板 但线程不会启动 代码位于配置 初始化程序中 这是
  • git 切换分支而不丢弃本地更改

    好吧 假设有一天我们碰巧做了一堆修改 当我们去提交它们时 我们注意到我们正在错误的分支上工作 我们如何强制git切换分支不丢弃本地更改 在等待回复时 我可能会以一种天真的方式解决这个问题 但我想知道是否有正确的程序 因为如果我说这之前没有发
  • 为什么二进制文件在压缩时会损坏?

    我有一项通过网络提供压缩文件的服务 该 zip 包含 Windows 平台的可执行文件 我正在使用 RubyZip 库来压缩文件 但该过程会损坏二进制文件 在我的本地服务器上 我们通过系统调用使用 zip 命令 它工作正常 zip 命令在
  • 给定“Array.new(10) { |e| e = e * 2 }”,Array#new 的块形式如何工作?

    我无法理解花括号内的部分 Array new 10 e e e 2 gt 0 2 4 6 8 10 12 14 16 18 我知道创建了一个包含十个值的新数组 但后半部分在做什么 让我们详细讨论一下 nums Array new 10 这将
  • 如何在 ruby​​ 代码中添加断言

    我想使用断言并将评估放入我的 ruby 代码中 例如 检查是否创建了 zip 文件 标签是否存在 文本区域中的消息等 我已经放了一些断言语句 例如assert selenium is text present textMessage 但它们
  • Git:合并到master,同时自动选择用分支覆盖master文件

    我正在使用 Git 来跟踪我的文档 Latex 源 我想让 master 分支充满适合最终用户发布的文档 这样当有人需要某些东西时 我可以切换到 master 分支 编译并分发文档 当手册需要重大更新时 我会创建新分支 但是 当手册获得批准
  • 删除远程master分支,由于是当前分支而被拒绝

    如何从 GitHub Bitbucket 删除远程主分支 我想 git push bb delete master remote bb acl user is allowed accepted payload K remote error
  • 为什么我的黄瓜场景在步骤一起运行时会失败,但在单独运行时会通过?

    当我将黄瓜场景作为一个整体运行时 或者使用命令 cucumber 我有 7 个失败的步骤 当我使用 正在进行的工作 标签单独运行它们时 它们通过得很好 我不认为这是数据库状态问题 我正在使用事务运行 我也尝试在没有事务的情况下运行并使用数据
  • 使用axlsx以延迟作业方法创建excel

    我正在尝试在模型中的延迟作业方法中生成 Excel 文件 在本地运行良好 我正在使用调度程序在heroku 中运行延迟作业 作业已成功完成 无需生成 Excel 我的延迟工作方法如下所示 def self generate excel Ax
  • .gitattributes 文件对于 git 真的有必要吗?

    我最近读了一些关于 gitattributes 的文章 也发现了像这样的地方 https github com alexkaratarakis gitattributes https github com alexkaratarakis g
  • 在 git Push 上硬重置

    我有一个接收后挂钩脚本位于我正在推送的远程存储库上 该脚本执行以下操作git reset hard 像这样的东西 git push opal Counting objects 74 done Delta compression using
  • AWS Elastic Beanstalk:推出新的 Rails 应用程序

    I just started using AWS elastic beanstalk to host a web app I wanted to make However after following the instructions t
  • 重载 Ruby 的 [...] 数组创建简写

    我编写了一个库 它通过主要通过方法别名来观察包装器来扩展几个基本 Ruby 类 然而 我在数组实例化简写中遇到了障碍 例如 a 1 2 3 我似乎找不到通过速记方式创建 Array 对象时实际调用的任何方法 这不是遗传 当前作用域中的方法或
  • HEAD 的 git 别名:refs/for/master

    我正在配置Gerrit我想避免写 git push gerrit HEAD refs for master 我想写 git push review 我确信可以修改 git config但我无法让它发挥作用 我设置了两种不同的推送类型 rev
  • 新的 LinkedIn 权限:使用 Rails LinkedIn gem 访问过去的职位和教育经历

    Linkedin 最近更新了他们的 API 在某些情况下对您可以访问的内容限制较少 但通常在您必须如何访问它方面更加明确 特别是 您必须在omniauth构建器中明确请求您想要的数据 Rails application config mid
  • 当object.next到达末尾时如何指向第一个元素?

    从数组创建枚举对象a 有没有什么方法可以指向 first when next到达终点 a 5 1 b a to enum b next gt 5 b next gt 1 b next gt Stop Iteration Iteration
  • ActiveRecord::Base:Class 的未定义方法 raise_in_transactional_callbacks=' (NoMethodError)

    在写这个问题之前 我查看了这些答案 但无法找到解决方案 执行rails生成scaffold时出错 用户名 string email string https stackoverflow com questions 24874678 erro
  • Rails 计算时间差

    我已经尝试过这样的代码 但它不起作用 require time diff cur time Time now strftime Y m d H M time diff components Time diff art datetime of
  • 确定字符串是否为有效的浮点值

    有没有一种方法可以简单地检查字符串值是否是有效的浮点值 如果字符串不是数值 则对字符串调用 to f 会将其转换为 0 0 当传递一个无效的浮点字符串时 使用 Float 会引发异常 该字符串更接近我想要的 但我不想处理捕获异常 我真正想要

随机推荐