Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

reek: uninitialized constant Parser::Ruby21 (NameError) #305

Closed
etagwerker opened this issue Sep 12, 2019 · 3 comments · Fixed by #306
Closed

reek: uninitialized constant Parser::Ruby21 (NameError) #305

etagwerker opened this issue Sep 12, 2019 · 3 comments · Fixed by #306

Comments

@etagwerker
Copy link
Member

etagwerker commented Sep 12, 2019

Hi there,

I'm submitting an issue based on this comment: #292 (comment) (initially reported by @dbwest)

I just ran into the same problem:

$ metric_fu
******* STARTING METRIC churn
******* ENDING METRIC churn
******* STARTING METRIC reek
/Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/gems/reek-2.2.1/lib/reek/source/source_code.rb:21:in `initialize': uninitialized constant Parser::Ruby21 (NameError)
Did you mean?  Parser::Ruby23
               Ruby21Parser
               Ruby24Parser
               Ruby23Parser
               Ruby22Parser
               Ruby26Parser
               Ruby25Parser
               Ruby20Parser
               RubyVM
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/gems/reek-2.2.1/lib/reek/source/source_code.rb:38:in `new'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/gems/reek-2.2.1/lib/reek/source/source_code.rb:38:in `from'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/gems/reek-2.2.1/lib/reek/source/source_locator.rb:19:in `block in sources'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/gems/reek-2.2.1/lib/reek/source/source_locator.rb:19:in `map'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/gems/reek-2.2.1/lib/reek/source/source_locator.rb:19:in `sources'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/gems/reek-2.2.1/lib/reek/source/source_repository.rb:29:in `parse'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/gems/reek-2.2.1/lib/reek/core/examiner.rb:34:in `initialize'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/metrics/reek/generator.rb:18:in `new'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/metrics/reek/generator.rb:18:in `run!'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/metrics/reek/generator.rb:13:in `emit'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/generator.rb:104:in `generate_result'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/reporting/result.rb:48:in `add'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/run.rb:21:in `block in measure'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/run.rb:19:in `each'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/run.rb:19:in `measure'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/run.rb:9:in `run'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/cli/helper.rb:19:in `run'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/cli/client.rb:19:in `run'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/bin/metric_fu:9:in `<top (required)>'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bin/metric_fu:23:in `load'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bin/metric_fu:23:in `<main>'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bin/ruby_executable_hooks:24:in `eval'
	from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bin/ruby_executable_hooks:24:in `<main>'

Here are the steps to reproduce:

git clone [email protected]:alphagov/e-petitions.git
git checkout metric_fu
bundle 
metric_fu

I tested with both v4.12.0 and master and I found the same result with both of them.

Update

  • I'm using Ruby v2.3.8
$ ruby --version
ruby 2.3.8p459 (2018-10-18 revision 65136) [x86_64-darwin17]
@etagwerker etagwerker changed the title uninitialized constant Parser::Ruby21 (NameError) reek: uninitialized constant Parser::Ruby21 (NameError) Sep 12, 2019
@Blake-LeBlanc
Copy link

Anything we can do in the meantime to get the process to complete?

I'm running ruby 2.7.0p0 and my output is very similar to OP's

uninitialized constant Parser::Ruby21 (NameError)
Did you mean? Parser::Ruby25 / Ruby VM

Thanks in advance!

@etagwerker
Copy link
Member Author

@Blake-LeBlanc You might want to try with https://rubygems.org/gems/fastruby-metric_fu. I started that fork with a couple of changes to address this issue.

@Blake-LeBlanc
Copy link

@Blake-LeBlanc You might want to try with https://rubygems.org/gems/fastruby-metric_fu. I started that fork with a couple of changes to address this issue.

Great! Thank you @etagwerker , that runs on my end!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants