Giter Club home page Giter Club logo

choices's Introduction

Choices for Rails

Easy-peasy external settings for your Rails app.

# Gemfile
gem 'choices'

In your app initializer block:

config.from_file 'settings.yml'

This will read configuration from "config/settings.yml" and, additionally, "settings.local.yml" if it exists. You should check the main file into version control, but not the ".local" file which is to be used for per-machine configuration: tweaks in development or private keys in production, for example.

# .gitignore
config/settings.local.yml

Configuration files can contain ERB; this is useful for reading in dynamic config such as from environment variables:

# settings.yml
defaults: &defaults
  secret_token: <%= ENV['COOKIE_SECRET'] %>
  heroku: <%= !!ENV['HEROKU_TYPE'] %>
  mongodb:
    uri: <%= ENV['MONGOHQ_URL'] %>

development:
  <<: *defaults

test: &testing
  <<: *defaults
  secret_token: <%= "banana" * 5 %>
  mongodb:
    database: myapp_test

cucumber:
  <<: *testing

The ".local" file can contain overrides for your development environment:

# settings.local.yml
development:
  mongodb:
    database: myapp_dev

Finally, the config keys can be read in your app as such:

Rails.configuration.heroku              #=> false
Rails.configuration.mongodb.database    #=> "myapp_dev"

choices's People

Contributors

mislav avatar pier-oliviert avatar remi avatar sunny avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

choices's Issues

Can't Configure Choices Within An Engine

Choices isn't usable within an Engine.

# ./engines/foo/foo.gemspec
Gem::Specification.new do |s|
  s.add_dependency 'choices'
end
# ./engines/foo/lib/foo.rb
require 'choices'
# ./engines/foo/lib/foo/engine.rb
class Engine < ::Rails::Engine
  isolate_namespace Foo

  config.from_file "settings.yml"
end
# ./engines/foo/config/settings.yml
defaults: &defaults
  secret_token: <%= ENV['SECRET_TOKEN'] %>

development:
  <<: *defaults

$ bundle exec rails server

railties-3.2.13/lib/rails/railtie/configuration.rb:85:in `method_missing': undefined method `from_file' for #<Rails::Engine::Configuration:0x007f7fa80fbe58> (NoMethodError)
    from /Users/simeon/Sites/lessonplanet/engines/foo/lib/foo/engine.rb:5:in `<class:Engine>'
    from /Users/simeon/Sites/lessonplanet/engines/foo/lib/foo/engine.rb:2:in `<module:Foo>'
    from /Users/simeon/Sites/lessonplanet/engines/foo/lib/foo/foo.rb:1:in `<top (required)>'
    from /Users/simeon/.rbenv/versions/1.9.3-p327-perf/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require'
    from /Users/simeon/.rbenv/versions/1.9.3-p327-perf/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `block in require'
    from /Users/simeon/.rbenv/versions/1.9.3-p327-perf/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /Users/simeon/.rbenv/versions/1.9.3-p327-perf/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require'
    from /Users/simeon/Sites/lessonplanet/engines/foo/lib/foo.rb:11:in `<top (required)>'

Allow configs to be scoped out

Currently using choices with multiple engines though they all use Rails.configuration as the root.

Recommend allowing a scope
config.from_file "my_engine.yml", "my_engine"

So you can avoid clobbering other configs

Rails.configuration.my_engine.some_config_key

Syck has been removed

Choices is great! Thanks for it!

I'm using Rails 4.0.0.rc1 and Ruby 2.0.0.

When choices is loaded, I'm notified, twice, that "syck has been removed". My research shows that it indeed has. I never noticed that Psych was broken in 1.9.2, but it seems to be working in 2.0.0. Can the code be updated to intelligently check for the Ruby version and not try to load syck in Ruby 2.0?

Yaml to Rails (action_dispatch, action_view, โ€ฆ) options

I'd like to write yaml settings like this :

development:
  action_mailer:
    perform_deliveries: true
    raise_delivery_errors: false

That would translate in Rails's config block to :

config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true

Could that be possible ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.