Circular dependency when running `warble config` on a project that has Warbler::Task.new in its Rakefile
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 25/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 停滞
- 技术栈
- ruby
- 领域
- build-system
调研方向
Start with the recursion in the trace: load_project_rakefile in lib/warbler/application.rb calls back into the Rails trait's before_configure in lib/warbler/traits/rails.rb, which re-enters Warbler::Task.new in lib/warbler/task.rb via Config#initialize in lib/warbler/config.rb. Reproduce with the Rakefile and an empty config/environment.rb from the report and run warble config. Done when that command writes the config file without the stack-level-too-deep error.
由索引模型根据 Issue 内容生成。
描述
I realize create a config file after adding the Rake task probably isn't very common, but it just happens to be what I've done the first time I've used Warbler.
Here's how to reproduce the issue (I'm using Warbler 1.3.6):
$ (
cat <<'EOF'
require 'rake'
require 'warbler'
Warbler::Task.new
EOF
) > Rakefile
$ mkdir config; touch config/environment.rb
And the stack trace:
warble aborted!
stack level too deep
org/jruby/RubyArray.java:1613:in `each'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:56:in `load_project_rakefile'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler.rb:25:in `project_application'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits/rails.rb:27:in `before_configure'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits.rb:28:in `before_configure'
org/jruby/RubyArray.java:1613:in `each'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits.rb:28:in `before_configure'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/config.rb:176:in `initialize'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/task.rb:48:in `initialize'
/Users/user/code/warbler/spec/sample_rake_bug/rakefile:3:in `(root)'
org/jruby/RubyKernel.java:1046:in `load'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:1:in `(root)'
org/jruby/RubyArray.java:1613:in `each'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:58:in `load_project_rakefile'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:56:in `load_project_rakefile'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler.rb:25:in `project_application'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits/rails.rb:27:in `before_configure'
org/jruby/RubyArray.java:1613:in `each'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits.rb:28:in `before_configure'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits.rb:28:in `before_configure'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/config.rb:176:in `initialize'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/task.rb:48:in `initialize'
org/jruby/RubyKernel.java:1046:in `load'
/Users/user/code/warbler/spec/sample_rake_bug/rakefile:3:in `(root)'
org/jruby/RubyArray.java:1613:in `each'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:1:in `(root)'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:58:in `load_project_rakefile'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:56:in `load_project_rakefile'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler.rb:25:in `project_application'
org/jruby/RubyArray.java:1613:in `each'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits/rails.rb:27:in `before_configure'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits.rb:28:in `before_configure'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits.rb:28:in `before_configure'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/config.rb:176:in `initialize'
org/jruby/RubyKernel.java:1046:in `load'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/task.rb:48:in `initialize'
org/jruby/RubyArray.java:1613:in `each'
/Users/user/code/warbler/spec/sample_rake_bug/rakefile:3:in `(root)'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:1:in `(root)'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:58:in `load_project_rakefile'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:56:in `load_project_rakefile'
org/jruby/RubyArray.java:1613:in `each'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler.rb:25:in `project_application'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits/rails.rb:27:in `before_configure'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits.rb:28:in `before_configure'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits.rb:28:in `before_configure'
org/jruby/RubyKernel.java:1046:in `load'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/config.rb:176:in `initialize'
org/jruby/RubyArray.java:1613:in `each'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/task.rb:48:in `initialize'
/Users/user/code/warbler/spec/sample_rake_bug/rakefile:3:in `(root)'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:1:in `(root)'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:58:in `load_project_rakefile'
org/jruby/RubyArray.java:1613:in `each'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:56:in `load_project_rakefile'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler.rb:25:in `project_application'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits/rails.rb:27:in `before_configure'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits.rb:28:in `before_configure'
org/jruby/RubyKernel.java:1046:in `load'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits.rb:28:in `before_configure'
org/jruby/RubyArray.java:1613:in `each'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/config.rb:176:in `initialize'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/task.rb:48:in `initialize'
/Users/user/code/warbler/spec/sample_rake_bug/rakefile:3:in `(root)'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:1:in `(root)'
org/jruby/RubyArray.java:1613:in `each'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:58:in `load_project_rakefile'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:56:in `load_project_rakefile'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler.rb:25:in `project_application'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits/rails.rb:27:in `before_configure'
org/jruby/RubyKernel.java:1046:in `load'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits.rb:28:in `before_configure'
org/jruby/RubyArray.java:1613:in `each'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits.rb:28:in `before_configure'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/config.rb:176:in `initialize'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/task.rb:48:in `initialize'
/Users/user/code/warbler/spec/sample_rake_bug/rakefile:3:in `(root)'
org/jruby/RubyArray.java:1613:in `each'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:1:in `(root)'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:58:in `load_project_rakefile'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:56:in `load_project_rakefile'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler.rb:25:in `project_application'
org/jruby/RubyKernel.java:1046:in `load'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits/rails.rb:27:in `before_configure'
org/jruby/RubyArray.java:1613:in `each'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits.rb:28:in `before_configure'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits.rb:28:in `before_configure'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/config.rb:176:in `initialize'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/task.rb:48:in `initialize'
org/jruby/RubyArray.java:1613:in `each'
/Users/user/code/warbler/spec/sample_rake_bug/rakefile:3:in `(root)'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:1:in `(root)'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:58:in `load_project_rakefile'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:56:in `load_project_rakefile'
org/jruby/RubyKernel.java:1046:in `load'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler.rb:25:in `project_application'
org/jruby/RubyArray.java:1613:in `each'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits/rails.rb:27:in `before_configure'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits.rb:28:in `before_configure'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits.rb:28:in `before_configure'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/config.rb:176:in `initialize'
org/jruby/RubyArray.java:1613:in `each'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/task.rb:48:in `initialize'
/Users/user/code/warbler/spec/sample_rake_bug/rakefile:3:in `(root)'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:1:in `(root)'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:58:in `load_project_rakefile'
org/jruby/RubyKernel.java:1046:in `load'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:56:in `load_project_rakefile'
org/jruby/RubyArray.java:1613:in `each'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler.rb:25:in `project_application'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits/rails.rb:27:in `before_configure'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits.rb:28:in `before_configure'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits.rb:28:in `before_configure'
org/jruby/RubyArray.java:1613:in `each'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/config.rb:176:in `initialize'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/task.rb:48:in `initialize'
/Users/user/code/warbler/spec/sample_rake_bug/rakefile:3:in `(root)'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:1:in `(root)'
org/jruby/RubyKernel.java:1046:in `load'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:58:in `load_project_rakefile'
org/jruby/RubyArray.java:1613:in `each'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/application.rb:56:in `load_project_rakefile'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler.rb:25:in `project_application'
/Users/user/.rbenv/versions/jruby-1.7.2/lib/ruby/gems/shared/gems/warbler-1.3.6/lib/warbler/traits/rails.rb:27:in `before_configure'
---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/1446630-circular-dependency-when-running-warble-config-on-a-project-that-has-warbler-task-new-in-its-rakefile?utm_campaign=plugin&utm_content=tracker%2F136961&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F136961&utm_medium=issues&utm_source=github).
- 主要语言
- Ruby
- 星标
- 901
- 派生
- 206
- 平均合并
- 1 天 10 小时
- 30 天内合并 PR
- 3
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
jruby/warbler 的其他 Issue
-
难度 4/5 3-5 天 新手友好度 35/100
-
难度 4/5 一周以上 新手友好度 25/100
-
难度 4/5 3-5 天 新手友好度 22/100
-
难度 5/5 一周以上 新手友好度 12/100
-
难度 5/5 一周以上 新手友好度 12/100
相似的 Issue
-
Bug: Assistant replies lose the space before numbers ("Oct7", "as of10-22-2026") with OpenAI models未关闭
难度 2/5 1-3 小时 新手友好度 84/100
we-promise/sure#4441 ·
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 70/100
lugassawan/swe-workbench#823 ·
维护者通常 1 天内回复
-
[BUG] Transcription spans omit the requested temperature可能已有人在做 @yorzi 今天认领。 未关闭bug
难度 2/5 1-3 小时 新手友好度 88/100
crmne/ruby_llm#1276 · 1 个 reaction ·
维护者通常 1 天内回复
-
needs verification
难度 2/5 1-3 小时 新手友好度 75/100
维护者通常 6 天内回复
-
Admin user page looks up a Tag for every instance-scoped role (`Role#resource_name`)可能已有人在做 @pkfrank 今天认领。 未关闭bug
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复