palkan / anyway_config

Configuration library for Ruby gems and applications
MIT License
778 stars 52 forks source link

Can't use with Rails Credentials #39

Closed Quintasan closed 5 years ago

Quintasan commented 5 years ago

I created a brand new application using Rails 5. To my config/application.rb I added the following code:

# config/application.rb
module Poloris
  class Config < Anyway::Config
    attr_config(
      database_host: 'localhost',
      database_port: 5432,
      database_user: 'root',
      database_password: 'debiru'
    )
  end

  def self.config
    @config ||= Config.new
  end
  class Application < Rails::Application
    ...
  end
end

in my credentials I added:

poloris:
  secret_key_base: 93d324c53f5cdd193349aec6e97191d502d34ecedbb44cac1aac51ee62dd2ca18d3c18b110781bdb6416c6ae1acdde1a49600cb5d4bdd66a5277eabcb7f9ff05
  database_host: 'localhost'
  database_port: 5432
  database_user: 'debiru'
  database_password: 'debiru'

but when I try doing AnywayConfig.for(:poloris) I get:

irb(main):001:0> Anyway::Config.for(:poloris)
Traceback (most recent call last):
        1: from (irb):1
TypeError (no implicit conversion of nil into Hash)

What am I doing wrong?

palkan commented 5 years ago

Which version of a gem do you use?

Could you try to run the following code in IRB and show the output (that would be helpful to locate where the failure happens):

begin;  Anyway::Config.for(:poloris); rescue => error; p error; puts error.backtrace; end
Quintasan commented 5 years ago

Which version of a gem do you use?

Could you try to run the following code in IRB and show the output (that would be helpful to locate where the failure happens):

begin;  Anyway::Config.for(:poloris); rescue => error; p error; puts error.backtrace; end

2.0.0.pre

Output of exception rescuing

irb(main):002:0> begin;  Anyway::Config.for(:poloris); rescue => error; p error; puts error.backtrace; end
#<TypeError: no implicit conversion of nil into Hash>
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/core_ext/hash/deep_merge.rb:24:in `merge!'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/core_ext/hash/deep_merge.rb:24:in `deep_merge!'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/anyway_config-2.0.0.pre/lib/anyway/rails/config.rb:65:in `load_from_credentials'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/anyway_config-2.0.0.pre/lib/anyway/rails/config.rb:32:in `each_source'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/anyway_config-2.0.0.pre/lib/anyway/rails/config.rb:23:in `load_from_sources'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/anyway_config-2.0.0.pre/lib/anyway/dynamic_config.rb:19:in `for'
(irb):2:in `rescue in irb_binding'
(irb):2:in `irb_binding'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/2.6.0/irb/workspace.rb:85:in `eval'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/2.6.0/irb/workspace.rb:85:in `evaluate'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/2.6.0/irb/context.rb:385:in `evaluate'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/2.6.0/irb.rb:493:in `block (2 levels) in eval_input'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/2.6.0/irb.rb:647:in `signal_status'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/2.6.0/irb.rb:490:in `block in eval_input'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/2.6.0/irb/ruby-lex.rb:246:in `block (2 levels) in each_top_level_statement'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/2.6.0/irb/ruby-lex.rb:232:in `loop'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/2.6.0/irb/ruby-lex.rb:232:in `block in each_top_level_statement'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/2.6.0/irb/ruby-lex.rb:231:in `catch'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/2.6.0/irb/ruby-lex.rb:231:in `each_top_level_statement'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/2.6.0/irb.rb:489:in `eval_input'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/2.6.0/irb.rb:428:in `block in run'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/2.6.0/irb.rb:427:in `catch'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/2.6.0/irb.rb:427:in `run'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/2.6.0/irb.rb:383:in `start'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-5.2.3/lib/rails/commands/console/console_command.rb:64:in `start'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-5.2.3/lib/rails/commands/console/console_command.rb:19:in `start'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-5.2.3/lib/rails/commands/console/console_command.rb:96:in `perform'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/thor-0.20.3/lib/thor/command.rb:27:in `run'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/thor-0.20.3/lib/thor/invocation.rb:126:in `invoke_command'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/thor-0.20.3/lib/thor.rb:387:in `dispatch'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-5.2.3/lib/rails/command/base.rb:65:in `perform'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-5.2.3/lib/rails/command.rb:46:in `invoke'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-5.2.3/lib/rails/commands.rb:18:in `<main>'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `block in require'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'
/home/quintasan/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'
bin/rails:4:in `<main>'
=> nil
palkan commented 5 years ago

@Quintasan Thanks for the report! Should be fixed in master. Check please. Feel free to re-open the issue if it's still failing.