diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2014-07-23 17:45:15 -0300 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2014-07-23 17:45:15 -0300 |
commit | bec08e774438e0a6bab74f7439106e2bd02ecc5a (patch) | |
tree | 2295af9d69b1ebae84fb4c719180b59c8484f8a6 | |
parent | cd7d414e48f537278043bfc77cfb4217e8c89c24 (diff) | |
parent | 558f8aa2ee80ee8cb859f0da9714dc93294c856b (diff) | |
download | rails-bec08e774438e0a6bab74f7439106e2bd02ecc5a.tar.gz rails-bec08e774438e0a6bab74f7439106e2bd02ecc5a.tar.bz2 rails-bec08e774438e0a6bab74f7439106e2bd02ecc5a.zip |
Merge pull request #16267 from robin850/rbx-yaml
Set Psych as the YAML engine for Rubinius
-rw-r--r-- | Gemfile | 6 | ||||
-rw-r--r-- | railties/lib/rails/generators/app_base.rb | 9 | ||||
-rw-r--r-- | railties/test/generators/app_generator_test.rb | 13 |
3 files changed, 28 insertions, 0 deletions
@@ -87,6 +87,12 @@ platforms :jruby do end end +platforms :rbx do + # The rubysl-yaml gem doesn't ship with Psych by default + # as it needs libyaml that isn't always available. + gem 'psych', '~> 2.0' +end + # gems that are necessary for ActiveRecord tests with Oracle database if ENV['ORACLE_ENHANCED'] platforms :ruby do diff --git a/railties/lib/rails/generators/app_base.rb b/railties/lib/rails/generators/app_base.rb index 20e512a7ff..c93ed10d6a 100644 --- a/railties/lib/rails/generators/app_base.rb +++ b/railties/lib/rails/generators/app_base.rb @@ -114,6 +114,7 @@ module Rails jbuilder_gemfile_entry, sdoc_gemfile_entry, spring_gemfile_entry, + psych_gemfile_entry, @extra_entries].flatten.find_all(&@gem_filter) end @@ -313,6 +314,14 @@ module Rails GemfileEntry.new('spring', nil, comment, group: :development) end + def psych_gemfile_entry + return [] unless defined?(Rubinius) + + comment = 'Use Psych as the YAML engine, instead of Syck, so serialized ' \ + 'data can be read safely from different rubies (see http://git.io/uuLVag)' + GemfileEntry.new('psych', '~> 2.0', comment, platforms: :rbx) + end + def bundle_command(command) say_status :run, "bundle #{command}" diff --git a/railties/test/generators/app_generator_test.rb b/railties/test/generators/app_generator_test.rb index 409616d0d2..aff484f3eb 100644 --- a/railties/test/generators/app_generator_test.rb +++ b/railties/test/generators/app_generator_test.rb @@ -488,6 +488,19 @@ class AppGeneratorTest < Rails::Generators::TestCase end end + def test_psych_gem + run_generator + gem_regex = /gem 'psych',\s+'~> 2.0', \s+platforms: :rbx/ + + assert_file "Gemfile" do |content| + if defined?(Rubinius) + assert_match(gem_regex, content) + else + assert_no_match(gem_regex, content) + end + end + end + protected def action(*args, &block) |