diff --git a/CHANGELOG.md b/CHANGELOG.md index 15da265..1eff515 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,7 @@ Whitespace conventions: - 1 spaces before normal text --> -## [2.0](https://github.com/opal/opal-rails/compare/v1.1.2...v2.0.0) - unreleased +## [2.0](https://github.com/opal/opal-rails/compare/v1.1.2...v2.0.0) - 2021-02-23 *Bumping a major version, since this version will make a number of dependencies opt-in and drop older Rails and Sprockets versions* diff --git a/README.md b/README.md index 6e6ca06..04bbeb0 100644 --- a/README.md +++ b/README.md @@ -32,27 +32,37 @@ bin/rails opal:install ### Configuration -Add your configuration in `config/initializers/assets.rb` with the following contents: +#### For the compiler + +Add your configuration for the compiler: + +`config/initializers/opal.rb` ```ruby # Compiler options -Rails.application.config.opal.method_missing = true -Rails.application.config.opal.optimized_operators = true -Rails.application.config.opal.arity_check = !Rails.env.production? -Rails.application.config.opal.const_missing = true +Rails.application.config.opal.method_missing_enabled = true +Rails.application.config.opal.const_missing_enabled = true +Rails.application.config.opal.arity_check_enabled = true +Rails.application.config.opal.freezing_stubs_enabled = true Rails.application.config.opal.dynamic_require_severity = :ignore +``` + +Check out the full list of the available configuration options at: [lib/opal/config.rb](https://github.com/opal/opal/blob/master/lib/opal/config.rb). -# Other options +#### For template assigns -# Send local and instance variables down to the view after converting -# thier value with `.to_json` +Add your configuration for rendering assigns when using the template handler from actions: + +`config/initializers/opal.rb` + +```ruby Rails.application.config.opal.assigns_in_templates = true Rails.application.config.opal.assigns_in_templates = :locals # only locals Rails.application.config.opal.assigns_in_templates = :ivars # only instance variables ``` -For a full list of the available configuration options for the compiler please refer to: [lib/opal/config.rb](https://github.com/opal/opal/blob/master/lib/opal/config.rb). +Local and instance variables will be sent down to the view after converting their values to JSON. ## Usage diff --git a/bin/sandbox-setup b/bin/sandbox-setup index 71c1258..7223f0a 100755 --- a/bin/sandbox-setup +++ b/bin/sandbox-setup @@ -4,7 +4,7 @@ require 'pathname' root = Pathname('sandbox') -system 'bin/rails opal:install' +system 'bin/rails g opal:install' system 'bin/rails g controller home index -f' root.join('config/routes.rb').write <<~RUBY diff --git a/lib/generators/opal/install/install_generator.rb b/lib/generators/opal/install/install_generator.rb index ea2ec3f..14cdb6b 100644 --- a/lib/generators/opal/install/install_generator.rb +++ b/lib/generators/opal/install/install_generator.rb @@ -4,9 +4,11 @@ class Opal::InstallGenerator < Rails::Generators::Base def configure_sprockets append_to_file 'app/assets/config/manifest.js', '//= link_directory ../javascript .js' template "application.js.rb", "app/assets/javascript/application.js.rb" + template "initializer.rb", "config/initializers/opal.rb" # Add the javascript tag to the application head tag - gsub_file 'app/views/layouts/application.html.erb', %r{^( *)}, - '\1 <%= javascript_include_tag "application", "data-turbolinks-track": "reload" %>\1' + gsub_file 'app/views/layouts/application.html.erb', %r{(\n *)}, + '\1 <%= javascript_include_tag "application", "data-turbolinks-track": "reload" %>' \ + '\1' end end diff --git a/lib/generators/opal/install/templates/initializer.rb b/lib/generators/opal/install/templates/initializer.rb new file mode 100644 index 0000000..aaba247 --- /dev/null +++ b/lib/generators/opal/install/templates/initializer.rb @@ -0,0 +1,22 @@ +# Check out the full list of the available configuration options at +# https://github.com/opal/opal/blob/master/lib/opal/config.rb + +Rails.application.configure do + # We suggest keeping the configuration above as default for all environments, + # disabling some of them might slightly reduce the bundle size or reduce performance + # by degrading some ruby features. + config.opal.method_missing_enabled = true + config.opal.const_missing_enabled = true + config.opal.arity_check_enabled = true + config.opal.freezing_stubs_enabled = true + config.opal.dynamic_require_severity = :ignore + + # To enable passing assigns from the controller to the opal template handler + # change the following configuration to one of these values: + # + # - true # both locals and instance variables + # - :locals # only locals + # - :ivars # only instance variables + # + config.opal.assigns_in_templates = false +end