gpt4 book ai didi

ruby-on-rails - Guard 看不到文件更新

转载 作者:行者123 更新时间:2023-12-04 05:52:27 25 4
gpt4 key购买 nike

我正在使用 this setup 开发自定义引擎.

我已经创建了引擎

rails plugin new MyEngine --full

然后我添加了 rspec-railsguard-rspec作为开发依赖项
s.add_development_dependency "rspec-rails"
s.add_development_dependency "guard-rspec"

在我的 gemspec 文件中。

当我同时运行 rspecrake spec (有或没有 bundle exec )我的规范运行良好。当我运行 guard命令但是它第一次运行所有规范,然后它什么都不做。它不会检测到整个应用程序中的任何文件更改。

Guardfile 像往常一样使用 guard init spec 生成,这是它的内容
# A sample Guardfile
# More info at https://github.com/guard/guard#readme

guard 'rspec', :version => 2 do
watch(%r{^spec/.+_spec\.rb$})
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
watch('spec/spec_helper.rb') { "spec/" }

# Rails example
watch(%r{^spec/.+_spec\.rb$})
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
watch(%r{^spec/support/(.+)\.rb$}) { "spec/" }
watch('spec/spec_helper.rb') { "spec/" }
watch('config/routes.rb') { "spec/routing" }
watch('app/controllers/application_controller.rb') { "spec/controllers" }
# Capybara request specs
watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/requests/#{m[1]}_spec.rb" }
end

如果我在守卫运行的情况下保持 shell 打开,而我从另一个 shell 打开 touch app/my_model.rb没发生什么事。 Guardfile 中列出的所有其他文件(模式)也是如此。

有没有办法调试这类问题?

更新
我创建了一个新项目(一个 rails 项目)并安装了 guard-shell gem 与此 Guardfile
guard 'shell' do
watch(%r{(.*)}) {|m| `cat #{m[0]}` }
watch(%r{(.*)}) {|m| raise m.to_s }
end

即使在这种情况下,如果我编辑任何文件,也不会发生任何事情。我开始认为问题可能出在其他地方,可能在 rb-fsevents gem 。我可以检查什么?

最佳答案

rspec 的保护文件显然不太正确。正在看app/controllers ,但不是 app/models .

你需要这样的规则:

watch(%r{^app/models/(.+)\.rb$}) {|m| "spec/models/#{m[1]}_spec.rb" }

将第二部分更改为保存模型规范的位置。好久没用rspec了,不记得spec目录布局了。

编辑:

同样奇怪的是,lib 观察者被定义了两次?一次在顶部,一次在 rails 下。我想知道第二个定义是否是错误的,并且意味着 app/models 的规则.

关于ruby-on-rails - Guard 看不到文件更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7311405/

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