diff --git a/.travis.yml b/.travis.yml index 8c0c49b..90019e5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,17 +7,20 @@ branches: only: - master gemfile: - - gemfiles/rails52.gemfile - - gemfiles/rails60.gemfile - - gemfiles/rails6.gemfile + - gemfiles/rails61.gemfile + - gemfiles/rails70.gemfile + - gemfiles/rails71.gemfile jobs: allow_failures: - - rvm: ruby-head - - gemfile: gemfiles/rails6.gemfile + - rvm: '3.3' + gemfile: gemfiles/rails61.gemfile + - rvm: '3.2' + gemfile: gemfiles/rails61.gemfile + language: ruby rvm: - - "2.5" - - "2.6" - - "2.7" - - ruby-head + - "3.0" + - "3.1" + - "3.2" + - "3.3" script: bundle exec rspec diff --git a/Gemfile b/Gemfile index 0c0aea3..5114287 100644 --- a/Gemfile +++ b/Gemfile @@ -2,7 +2,7 @@ source "https://rubygems.org" gemspec -gem "rails", ">= 5.2.0", "< 6.1" +gem "rails", ">= 5.2.0", "< 7.2" group :test do gem "aruba", "~> 1.0" diff --git a/gemfiles/rails6.gemfile b/gemfiles/rails61.gemfile similarity index 85% rename from gemfiles/rails6.gemfile rename to gemfiles/rails61.gemfile index 95b765f..de7f10f 100644 --- a/gemfiles/rails6.gemfile +++ b/gemfiles/rails61.gemfile @@ -2,7 +2,7 @@ source "https://rubygems.org" gemspec path: ".." -gem "rails", "~> 6.0" +gem "rails", "~> 6.1" group :test do gem "aruba", "~> 1.0" diff --git a/gemfiles/rails52.gemfile b/gemfiles/rails70.gemfile similarity index 84% rename from gemfiles/rails52.gemfile rename to gemfiles/rails70.gemfile index fde2cd4..48a8a43 100644 --- a/gemfiles/rails52.gemfile +++ b/gemfiles/rails70.gemfile @@ -2,7 +2,7 @@ source "https://rubygems.org" gemspec path: ".." -gem "rails", "~> 5.2.0" +gem "rails", "~> 7.0" group :test do gem "aruba", "~> 1.0" diff --git a/gemfiles/rails60.gemfile b/gemfiles/rails71.gemfile similarity index 84% rename from gemfiles/rails60.gemfile rename to gemfiles/rails71.gemfile index ba2cb62..f650cf5 100644 --- a/gemfiles/rails60.gemfile +++ b/gemfiles/rails71.gemfile @@ -2,7 +2,7 @@ source "https://rubygems.org" gemspec path: ".." -gem "rails", "~> 6.0.0" +gem "rails", "~> 7.1" group :test do gem "aruba", "~> 1.0" diff --git a/lib/figaro/application.rb b/lib/figaro/application.rb index 1608ae1..4a2b697 100644 --- a/lib/figaro/application.rb +++ b/lib/figaro/application.rb @@ -57,7 +57,16 @@ def raw_configuration end def parse(path) - File.exist?(path) && YAML.load(ERB.new(File.read(path)).result) || {} + return {} unless File.exist?(path) + + payload = ERB.new(File.read(path)).result + + result = if Gem::Version.new(Psych::VERSION) >= Gem::Version.new("4") + YAML.safe_load(payload, aliases: true) + else + YAML.load(payload) + end + result || {} end def global_configuration diff --git a/lib/figaro/cli/install.rb b/lib/figaro/cli/install.rb index d07113d..54e585c 100644 --- a/lib/figaro/cli/install.rb +++ b/lib/figaro/cli/install.rb @@ -19,7 +19,7 @@ def create_configuration end def ignore_configuration - if File.exists?(".gitignore") + if File.exist?(".gitignore") append_to_file(".gitignore", <<-EOF) # Ignore application configuration diff --git a/spec/figaro/application_spec.rb b/spec/figaro/application_spec.rb index d9e8d7c..d8d20f3 100644 --- a/spec/figaro/application_spec.rb +++ b/spec/figaro/application_spec.rb @@ -105,6 +105,17 @@ def yaml_to_path(yaml) expect(application.configuration).to eq("foo" => "bar") end + it "loads alias from YAML" do + application = Application.new(path: yaml_to_path(<<-YAML), environment: "development") +default: &defaults + foo: bar +development: + <<: *defaults +YAML + + expect(application.configuration).to eq("foo" => "bar") + end + it "merges environment-specific values" do application = Application.new(path: yaml_to_path(<<-YAML), environment: "test") foo: bar diff --git a/spec/rails_spec.rb b/spec/rails_spec.rb index 9d9341a..964f1ff 100644 --- a/spec/rails_spec.rb +++ b/spec/rails_spec.rb @@ -1,11 +1,19 @@ describe Figaro::Rails do before do + rails_spec = Bundler.locked_gems.specs.find { |spec| spec.name == "rails" } + skip_asset_pipeline_option = + if rails_spec.version >= Gem::Version.new("7.0.0") + "--skip-asset-pipeline" + else + "--skip-sprockets" + end + run_command_and_stop(<<-CMD) rails new example \ --skip-gemfile \ --skip-git \ --skip-keeps \ - --skip-sprockets \ + #{skip_asset_pipeline_option} \ --skip-spring \ --skip-listen \ --skip-javascript \