1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Enable passing env var paths to cli -m option

Currently, if you add the --template/-m option to a railsrc file, you
lose the ability to define the path to your rails template using an
environment variable, which you have when passing that option from the
command line.

This patch adds that ability by shelling out to interpret the passed
path.
This commit is contained in:
Jake Romer 2021-08-22 21:49:56 -04:00
parent 6a2a824e85
commit 5ec47aaf13
No known key found for this signature in database
GPG key ID: 8E627277FC2F725F
2 changed files with 20 additions and 1 deletions

View file

@ -148,7 +148,7 @@ module Rails
when /^https?:\/\//
options[:template]
when String
File.expand_path(options[:template], Dir.pwd)
File.expand_path(`echo #{options[:template]}`.strip)
else
options[:template]
end

View file

@ -720,6 +720,25 @@ class AppGeneratorTest < Rails::Generators::TestCase
assert_match(/It works from file!/, run_generator([destination_root, "-m", "lib/template.rb"]))
end
def test_template_from_url
url = "https://raw.githubusercontent.com/rails/rails/f95c0b7e96/railties/test/fixtures/lib/template.rb"
FileUtils.cd(Rails.root)
assert_match(/It works from file!/, run_generator([destination_root, "-m", url]))
end
def test_template_from_abs_path
absolute_path = File.expand_path(Rails.root, "fixtures")
FileUtils.cd(Rails.root)
assert_match(/It works from file!/, run_generator([destination_root, "-m", "#{absolute_path}/lib/template.rb"]))
end
def test_template_from_env_var_path
ENV["FIXTURES_HOME"] = File.expand_path(Rails.root, "fixtures")
FileUtils.cd(Rails.root)
assert_match(/It works from file!/, run_generator([destination_root, "-m", "$FIXTURES_HOME/lib/template.rb"]))
ENV.delete("FIXTURES_HOME")
end
def test_usage_read_from_file
assert_called(File, :read, returns: "USAGE FROM FILE") do
assert_equal "USAGE FROM FILE", Rails::Generators::AppGenerator.desc