Skip to content

undefined method `init' for module PostHog (NoMethodError) #106

@dapicester

Description

@dapicester

Hello, I am trying to use PostHog in my Rails 7.2.3 application.

I have followed the instructions:

  1. Add the gems to my Gemfile:
gem "posthog-ruby"
gem "posthog-rails"
  1. Install with bundle install (it installs version 3.5.4)
  2. Generate the initializer with rails generate posthog:install
  3. Set my api_key and host in the config/initializers/posthog.rb

Now, when I try to run Rails with rails server I get the error

/Users/me/Projects/myrailsapp/config/initializers/posthog.rb:36:in `<main>': undefined method `init' for module PostHog (NoMethodError)

PostHog.init do |config|
       ^^^^^
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/engine.rb:689:in `load'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/engine.rb:689:in `block in load_config_initializer'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/activesupport-7.2.3/lib/active_support/notifications.rb:212:in `instrument'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/engine.rb:688:in `load_config_initializer'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/engine.rb:642:in `block (2 levels) in <class:Engine>'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/engine.rb:641:in `each'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/engine.rb:641:in `block in <class:Engine>'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/initializable.rb:32:in `instance_exec'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/initializable.rb:32:in `run'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/initializable.rb:61:in `block in run_initializers'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/tsort-0.2.0/lib/tsort.rb:231:in `block in tsort_each'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/tsort-0.2.0/lib/tsort.rb:353:in `block (2 levels) in each_strongly_connected_component'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/tsort-0.2.0/lib/tsort.rb:425:in `block (2 levels) in each_strongly_connected_component_from'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/tsort-0.2.0/lib/tsort.rb:434:in `each_strongly_connected_component_from'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/tsort-0.2.0/lib/tsort.rb:424:in `block in each_strongly_connected_component_from'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/initializable.rb:50:in `each'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/initializable.rb:50:in `tsort_each_child'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/tsort-0.2.0/lib/tsort.rb:418:in `call'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/tsort-0.2.0/lib/tsort.rb:418:in `each_strongly_connected_component_from'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/tsort-0.2.0/lib/tsort.rb:352:in `block in each_strongly_connected_component'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/tsort-0.2.0/lib/tsort.rb:350:in `each'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/tsort-0.2.0/lib/tsort.rb:350:in `call'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/tsort-0.2.0/lib/tsort.rb:350:in `each_strongly_connected_component'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/tsort-0.2.0/lib/tsort.rb:229:in `tsort_each'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/tsort-0.2.0/lib/tsort.rb:208:in `tsort_each'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/initializable.rb:60:in `run_initializers'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/application.rb:435:in `initialize!'
	from /Users/me/Projects/myrailsapp/config/environment.rb:5:in `<main>'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/3.3.0/bundled_gems.rb:69:in `require'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/3.3.0/bundled_gems.rb:69:in `block (2 levels) in replace_require'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/zeitwerk-2.7.4/lib/zeitwerk/core_ext/kernel.rb:34:in `require'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/application.rb:411:in `require_environment!'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/command/actions.rb:20:in `boot_application!'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/commands/console/console_command.rb:86:in `perform'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/thor-1.4.0/lib/thor/command.rb:28:in `run'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/thor-1.4.0/lib/thor/invocation.rb:127:in `invoke_command'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/command/base.rb:178:in `invoke_command'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/thor-1.4.0/lib/thor.rb:538:in `dispatch'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/command/base.rb:73:in `perform'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/command.rb:71:in `block in invoke'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/command.rb:149:in `with_argv'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/command.rb:69:in `invoke'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/railties-7.2.3/lib/rails/commands.rb:18:in `<main>'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/3.3.0/bundled_gems.rb:69:in `require'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/3.3.0/bundled_gems.rb:69:in `block (2 levels) in replace_require'
	from /Users/me/.local/share/mise/installs/ruby/3.3.10/lib/ruby/gems/3.3.0/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
	from bin/rails:4:in `<main>'

It seems that somehowPostHog has not been properly initialized.

If I remove the Post.init block from the initializer the app can boot, but of course cannot send events to PostHog.
In fact, trying from the Rails console:

PostHog.capture({ distinct_id: 'user_123', event: 'test' })
(myrailsapp):2:in `<main>': PostHog is not initialized. Call PostHog.init in an initializer. (RuntimeError)

Am I missing something?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions