Search code examples
ruby-on-railsherokuspreeunicorn

wrong number of arguments (0 for 1) (ArgumentError) when git push heroku master


Background: Try to push spree to heroku. It work ok in localhost:3000 but no luck in heroku.

After push heroku master, it's was no error. But when open heroku it's display Application Error.

Can anyone help get rid the "wrong number of arguments"

When heroku open

Application Error

An error occurred in the application and your page could not be served. Please try again in a few moments.

If you are the application owner, check your logs for details.

In the heroku logs, there is timeout as follow

Starting process with command `bundle exec unicorn -p 56138 -c ./config/unicorn.rb`
2016-08-18T05:52:21.426098+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/unicorn- 5.1.0/lib/unicorn/configurator.rb:196:in `timeout': wrong number of arguments (0 for 1) (ArgumentError)

Solution

  • Error happened from follow someone blog code here

    worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3)
    timeout
    timeout 15
    preload_app true
    before_fork do |server, worker|
    Signal.trap 'TERM' do
      puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
      Process.kill 'QUIT', Process.pid
    end
    defined?(ActiveRecord::Base) and
      ActiveRecord::Base.connection.disconnect!
    end
    after_fork do |server, worker|
    Signal.trap 'TERM' do
      puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
    end
    defined?(ActiveRecord::Base) and
      ActiveRecord::Base.establish_connection
    end
    

    Which has error from second line

    timeout
    

    removed that timeout then it worked.