opal-rails 0.7.0 → 0.8.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.spectator.rb +1 -0
- data/.travis.yml +8 -3
- data/CHANGELOG.md +3 -0
- data/Gemfile +7 -3
- data/README.md +51 -10
- data/Rakefile +6 -1
- data/app/controllers/opal_spec_controller.rb +20 -14
- data/app/helpers/opal_helper.rb +21 -3
- data/app/views/layouts/opal_spec.html.erb +0 -2
- data/app/views/opal_spec/run.html.erb +33 -2
- data/lib/assets/javascripts/opal_ujs.js.rb +4 -0
- data/lib/opal/rails/engine.rb +26 -5
- data/lib/opal/rails/spec_builder.rb +92 -0
- data/lib/opal/rails/version.rb +1 -1
- data/lib/rails/generators/opal/assets/assets_generator.rb +1 -1
- data/lib/tasks/opal-rails_tasks.rake +16 -17
- data/opal-rails.gemspec +3 -3
- data/spec/helpers/opal_helper_spec.rb +18 -0
- data/spec/integration/assigns_spec.rb +4 -3
- data/spec/integration/in_browser_specs_spec.rb +8 -6
- data/spec/integration/source_map_spec.rb +7 -6
- data/test_app/config/environments/production.rb +1 -1
- data/test_app/config/environments/test.rb +6 -1
- data/test_app/{app/assets/javascripts/spec → spec-opal}/example_spec.js.rb +2 -0
- data/test_app/spec-opal/requires_opal_spec.js.rb +8 -0
- data/test_app/spec-opal/spec_helper.rb +3 -0
- data/test_app/{app/assets/javascripts/spec → spec-opal}/subdirectory/other_spec.js.rb +2 -0
- metadata +20 -16
- data/lib/assets/javascripts/opal-rspec-runner.js.rb +0 -6
- data/lib/assets/javascripts/opal_ujs.js +0 -4
- data/test_app/app/assets/javascripts/spec.js +0 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 073a982ba5fda2d923d8e79db68596f63ab125e6
         | 
| 4 | 
            +
              data.tar.gz: 72b8f6b7e70f2b942919b03ae7bbde7bb9f147c8
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 305c56f69497766454b69586b9a1fbb9b555d78924a9b2a8b5bbf9b46306070ed67e01cf2f2ea1b4d97660783b215a77802e29457a0208f0169eb91d07e2e727
         | 
| 7 | 
            +
              data.tar.gz: 29a02ff388e6b40a6e1d3e6f474da7c5d2d1cb6760dd5414bdb91bdce4dac5ef0443af63739bd5cf03148c73c009a28b3b7b500a4232c5cf0e3ffbfe810ef236
         | 
    
        data/.spectator.rb
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            ENV['RSPEC_COMMAND'] = 'rspec'
         | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/Gemfile
    CHANGED
    
    | @@ -2,10 +2,14 @@ source 'https://rubygems.org' | |
| 2 2 | 
             
            gemspec
         | 
| 3 3 |  | 
| 4 4 | 
             
            gem 'capybara-webkit'
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            # gem 'opal',        github: 'opal'
         | 
| 7 | 
            -
            # gem 'opal-jquery', path: '../opal-jquery'
         | 
| 5 | 
            +
             | 
| 8 6 | 
             
            # gem 'opal',        path: '../opal'
         | 
| 7 | 
            +
            # gem 'opal-rspec',  path: '../opal-rspec'
         | 
| 8 | 
            +
            # gem 'opal-jquery', path: '../opal-jquery'
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            gem 'opal',        github: 'opal'
         | 
| 11 | 
            +
            gem 'opal-rspec',  github: 'opal/opal-rspec'
         | 
| 12 | 
            +
            gem 'opal-jquery', github: 'opal/opal-jquery'
         | 
| 9 13 |  | 
| 10 14 | 
             
            if RUBY_VERSION.to_f < 1.9
         | 
| 11 15 | 
             
              gem 'nokogiri', '< 1.6'
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            # Opal Rails
         | 
| 2 2 |  | 
| 3 | 
            -
            [](http://travis-ci.org/opal/opal-rails)
         | 
| 4 | 
            +
            [](https://codeclimate.com/github/opal/opal-rails)
         | 
| 5 5 | 
             
            [](http://badge.fury.io/rb/opal-rails)
         | 
| 6 6 | 
             
            
         | 
| 7 7 | 
             
            
         | 
| @@ -37,6 +37,12 @@ module MyApp | |
| 37 37 | 
             
                config.opal.optimized_operators = true
         | 
| 38 38 | 
             
                config.opal.arity_check         = false
         | 
| 39 39 | 
             
                config.opal.const_missing       = true
         | 
| 40 | 
            +
                config.opal.dynamic_require_severity = :ignore
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                # Enable/disable /opal_specs route
         | 
| 43 | 
            +
                config.opal.enable_specs        = true
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                config.opal.spec_location = 'spec-opal'
         | 
| 40 46 | 
             
              end
         | 
| 41 47 | 
             
            end
         | 
| 42 48 | 
             
            ```
         | 
| @@ -55,15 +61,33 @@ Now ships with a patch to sprockets cache key to include processor version that | |
| 55 61 |  | 
| 56 62 | 
             
            ### Asset Pipeline
         | 
| 57 63 |  | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 64 | 
            +
            You can rename `app/assets/javascripts/application.js` to `application.js.rb`. Even if not necessary, it is recommended to change Sprockets' `//= require` statements to Ruby' `require` methods.
         | 
| 65 | 
            +
            Sprockets' `//= require` statements won't be known by the opal builder and therefore you can end up adding something twice.
         | 
| 66 | 
            +
             | 
| 67 | 
            +
            For Opal 0.7 and below, the following example should work:
         | 
| 68 | 
            +
             | 
| 69 | 
            +
            ```ruby
         | 
| 70 | 
            +
            # app/assets/javascripts/application.js.rb
         | 
| 71 | 
            +
             | 
| 72 | 
            +
            #= require opal
         | 
| 73 | 
            +
            #= require opal_ujs
         | 
| 74 | 
            +
            #= require turbolinks
         | 
| 75 | 
            +
            #= require_tree .
         | 
| 76 | 
            +
            ```
         | 
| 77 | 
            +
             | 
| 78 | 
            +
            For Opal 0.8 and above, you should be able to use the following syntax:
         | 
| 79 | 
            +
             | 
| 80 | 
            +
            ```ruby
         | 
| 81 | 
            +
            # app/assets/javascripts/application.js.rb
         | 
| 60 82 |  | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 83 | 
            +
            require 'opal'
         | 
| 84 | 
            +
            require 'opal_ujs'
         | 
| 85 | 
            +
            require 'turbolinks'
         | 
| 86 | 
            +
            require_tree '.'
         | 
| 65 87 | 
             
            ```
         | 
| 66 88 |  | 
| 89 | 
            +
            As you see in the example above, Opal also gives you a Ruby equivalent of `//= require_tree`.
         | 
| 90 | 
            +
             | 
| 67 91 | 
             
            Opal requires are forwarded to the Asset Pipeline at compile time (similarly to what happens for RubyMotion). You can use either the `.rb` or `.opal` extension:
         | 
| 68 92 |  | 
| 69 93 | 
             
            ```ruby
         | 
| @@ -138,12 +162,12 @@ Of course you need to require `haml-rails` separately since its presence is not | |
| 138 162 |  | 
| 139 163 | 
             
            ### Spec!
         | 
| 140 164 |  | 
| 141 | 
            -
            Add specs into  | 
| 165 | 
            +
            Add specs into `/spec-opal`:
         | 
| 142 166 |  | 
| 143 167 | 
             
            and then a spec folder with you specs!
         | 
| 144 168 |  | 
| 145 169 | 
             
            ```ruby
         | 
| 146 | 
            -
            #  | 
| 170 | 
            +
            # spec-opal/example_spec.js.rb
         | 
| 147 171 |  | 
| 148 172 | 
             
            describe 'a spec' do
         | 
| 149 173 | 
             
              it 'has successful examples' do
         | 
| @@ -154,6 +178,23 @@ end | |
| 154 178 |  | 
| 155 179 | 
             
            Then visit `/opal_spec` from your app and **reload at will** or use the command line with `rake opal:spec`.
         | 
| 156 180 |  | 
| 181 | 
            +
            #### CHANGE from versions pre 0.7.1
         | 
| 182 | 
            +
             | 
| 183 | 
            +
            Specs used to run out of app/assets/javascripts/spec which was problematic because require_tree . would cause opal/sprockets to compile the specs for non spec running.  This could result in bad specs that prevent your application Opal code from compiling, and even if it compiles you'll get exceptions about the test framework methods not being defined.  To address this, specs have been moved out of the app/assets/javascripts to Rails.root/spec-opal.  The name spec-opal was chosen to put it close to the spec directory.  We don't want to put specs in spec directory because we don't want the "backend" rspec to run those.
         | 
| 184 | 
            +
             | 
| 185 | 
            +
            The location of specs is configurable. To restore the old location of app/assets/javascripts/spec add an initializer file like the below.
         | 
| 186 | 
            +
             | 
| 187 | 
            +
            ```ruby
         | 
| 188 | 
            +
            # config/initializers/opal.rb
         | 
| 189 | 
            +
            Rails.application.config.opal.spec_location = "app/assets/javascripts/spec"
         | 
| 190 | 
            +
             | 
| 191 | 
            +
            ```
         | 
| 192 | 
            +
             | 
| 193 | 
            +
            Similarly, you can put the opal specs in another location via a similar initializer call.
         | 
| 194 | 
            +
             | 
| 195 | 
            +
             | 
| 196 | 
            +
             | 
| 197 | 
            +
             | 
| 157 198 | 
             
            
         | 
| 158 199 |  | 
| 159 200 |  | 
    
        data/Rakefile
    CHANGED
    
    | @@ -10,5 +10,10 @@ Bundler::GemHelper.install_tasks | |
| 10 10 | 
             
            # TEST
         | 
| 11 11 |  | 
| 12 12 | 
             
            require 'rspec/core/rake_task'
         | 
| 13 | 
            -
            RSpec::Core::RakeTask.new : | 
| 13 | 
            +
            RSpec::Core::RakeTask.new :rspec
         | 
| 14 14 |  | 
| 15 | 
            +
             | 
| 16 | 
            +
            require File.expand_path('../test_app/config/application', __FILE__)
         | 
| 17 | 
            +
            TestApp::Application.load_tasks
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            task :default => [:rspec, 'opal:spec']
         | 
| @@ -1,5 +1,10 @@ | |
| 1 | 
            +
            require 'opal/rails/spec_builder'
         | 
| 2 | 
            +
            require 'fileutils'
         | 
| 3 | 
            +
            require 'pathname'
         | 
| 4 | 
            +
             | 
| 1 5 | 
             
            class OpalSpecController < ActionController::Base
         | 
| 2 | 
            -
              helper_method :spec_files
         | 
| 6 | 
            +
              helper_method :spec_files, :pattern, :clean_spec_path, :runner_name
         | 
| 7 | 
            +
              helper_method :check_errors_for, :builder
         | 
| 3 8 |  | 
| 4 9 | 
             
              def run
         | 
| 5 10 | 
             
              end
         | 
| @@ -7,26 +12,27 @@ class OpalSpecController < ActionController::Base | |
| 7 12 |  | 
| 8 13 | 
             
              private
         | 
| 9 14 |  | 
| 10 | 
            -
               | 
| 11 | 
            -
             | 
| 15 | 
            +
              # This will deactivate the requirement to precompile assets in this controller
         | 
| 16 | 
            +
              # as specs shouldn't go to production anyway.
         | 
| 17 | 
            +
              def check_errors_for(*)
         | 
| 18 | 
            +
                #noop
         | 
| 12 19 | 
             
              end
         | 
| 13 20 |  | 
| 14 | 
            -
              def  | 
| 21 | 
            +
              def pattern
         | 
| 15 22 | 
             
                params[:pattern]
         | 
| 16 23 | 
             
              end
         | 
| 17 24 |  | 
| 18 | 
            -
              def  | 
| 19 | 
            -
                 | 
| 20 | 
            -
             | 
| 25 | 
            +
              def builder
         | 
| 26 | 
            +
                @builder ||= Opal::Rails::SpecBuilder.new(
         | 
| 27 | 
            +
                  spec_location: Rails.application.config.opal.spec_location,
         | 
| 28 | 
            +
                  sprockets: Rails.application.config.assets,
         | 
| 29 | 
            +
                  pattern: pattern,
         | 
| 30 | 
            +
                )
         | 
| 21 31 | 
             
              end
         | 
| 22 32 |  | 
| 23 | 
            -
              def  | 
| 24 | 
            -
                 | 
| 33 | 
            +
              def runner_name
         | 
| 34 | 
            +
                builder.runner_pathname.basename.to_s.gsub(/(\.js)?\.rb$/, '')
         | 
| 25 35 | 
             
              end
         | 
| 26 36 |  | 
| 27 | 
            -
               | 
| 28 | 
            -
                Dir[Rails.root.join("{app,lib}/assets/javascripts/spec/#{glob}.{rb,opal}")].map do |path|
         | 
| 29 | 
            -
                  path.split('assets/javascripts/spec/').flatten.last.gsub(/(\.rb|\.opal)/, '')
         | 
| 30 | 
            -
                end.uniq
         | 
| 31 | 
            -
              end
         | 
| 37 | 
            +
              delegate :spec_files, :clean_spec_path, to: :builder
         | 
| 32 38 | 
             
            end
         | 
    
        data/app/helpers/opal_helper.rb
    CHANGED
    
    | @@ -1,7 +1,25 @@ | |
| 1 1 | 
             
            module OpalHelper
         | 
| 2 | 
            -
              def opal_tag(&block)
         | 
| 3 | 
            -
                opal_code  | 
| 4 | 
            -
                 | 
| 2 | 
            +
              def opal_tag(opal_code = nil, &block)
         | 
| 3 | 
            +
                opal_code ||= capture(&block)
         | 
| 4 | 
            +
                compiler_options = Opal::Processor.compiler_options.merge(requirable: false)
         | 
| 5 | 
            +
                compiler = Opal::Compiler.new(opal_code, compiler_options)
         | 
| 6 | 
            +
                js_code = compiler.compile
         | 
| 5 7 | 
             
                javascript_tag js_code
         | 
| 6 8 | 
             
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              def javascript_include_tag(*sources)
         | 
| 11 | 
            +
                options = sources.extract_options!
         | 
| 12 | 
            +
                sprockets = Rails.application.assets
         | 
| 13 | 
            +
                skip_loader = options.delete(:skip_opal_loader)
         | 
| 14 | 
            +
                script_tags = super(*sources, options)
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                return script_tags if skip_loader
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                sources.each do |source|
         | 
| 19 | 
            +
                  loading_code = Opal::Processor.load_asset_code(sprockets, source)
         | 
| 20 | 
            +
                  script_tags << javascript_tag(loading_code) if loading_code.present?
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                script_tags
         | 
| 24 | 
            +
              end
         | 
| 7 25 | 
             
            end
         | 
| @@ -1,9 +1,40 @@ | |
| 1 | 
            -
             | 
| 1 | 
            +
            <% if pattern.present? %>
         | 
| 2 | 
            +
              <%= link_to 'All specs', opal_spec_path %>
         | 
| 3 | 
            +
            <% end %>
         | 
| 2 4 |  | 
| 5 | 
            +
            <h2>Running:</h2>
         | 
| 3 6 | 
             
            <ul>
         | 
| 4 7 | 
             
              <% spec_files.each do |spec_file| %>
         | 
| 5 8 | 
             
                <li>
         | 
| 6 | 
            -
                   | 
| 9 | 
            +
                  <% spec_file = clean_spec_path(spec_file) %>
         | 
| 10 | 
            +
                  <%= link_to spec_file, opal_spec_path(pattern: spec_file) %>
         | 
| 7 11 | 
             
                </li>
         | 
| 8 12 | 
             
              <% end %>
         | 
| 9 13 | 
             
            </ul>
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            <%# The list of all asset dependency %>
         | 
| 16 | 
            +
            <% all_specs = [] %>
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            <%# Track root assets that will need to be bootstrapped %>
         | 
| 19 | 
            +
            <% root_assets = {} %>
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            <%# Collect all assets with their dependencies %>
         | 
| 22 | 
            +
            <% builder.clean_spec_files.each do |require_path| %>
         | 
| 23 | 
            +
              <% asset = lookup_asset_for_path(require_path, type: :javascript) %>
         | 
| 24 | 
            +
              <% dependency_paths = asset.to_a.map { |a| a.logical_path } %>
         | 
| 25 | 
            +
              <% all_specs += dependency_paths  %>
         | 
| 26 | 
            +
              <% root_assets[dependency_paths.last] = require_path %>
         | 
| 27 | 
            +
            <% end %>
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            <%# We'll ececute the boot code all at once in the end %>
         | 
| 30 | 
            +
            <% load_code = [] %>
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            <%# Add include tags and boot code, we use #uniq as we don't want to source the same asset twice %>
         | 
| 33 | 
            +
            <% all_specs.uniq.each do |asset_path| %>
         | 
| 34 | 
            +
              <%- root_asset = root_assets[asset_path] -%>
         | 
| 35 | 
            +
              <%= javascript_include_tag asset_path, skip_opal_loader: true %>
         | 
| 36 | 
            +
              <%- load_code << javascript_tag(Opal::Processor.load_asset_code(Rails.application.assets, root_asset)) if root_asset -%>
         | 
| 37 | 
            +
            <% end %>
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            <%# Boot! %>
         | 
| 40 | 
            +
            <%= load_code.join.html_safe %>
         | 
    
        data/lib/opal/rails/engine.rb
    CHANGED
    
    | @@ -1,6 +1,7 @@ | |
| 1 1 | 
             
            require 'rails'
         | 
| 2 2 | 
             
            require 'opal/sprockets/server'
         | 
| 3 3 | 
             
            require 'opal/sprockets/processor'
         | 
| 4 | 
            +
            require 'opal/rails/spec_builder'
         | 
| 4 5 |  | 
| 5 6 | 
             
            module Opal
         | 
| 6 7 | 
             
              module Rails
         | 
| @@ -9,6 +10,12 @@ module Opal | |
| 9 10 |  | 
| 10 11 | 
             
                  config.opal = ActiveSupport::OrderedOptions.new
         | 
| 11 12 |  | 
| 13 | 
            +
                  config.opal.enable_specs = ::Rails.env.development? || ::Rails.env.test?
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                  # new default location, override-able in a Rails initializer
         | 
| 16 | 
            +
                  config.opal.spec_location = 'spec-opal'
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  config.opal.dynamic_require_severity = :ignore
         | 
| 12 19 |  | 
| 13 20 | 
             
                  # Cache eager_load_paths now, otherwise the assets dir is added
         | 
| 14 21 | 
             
                  # and its .rb files are eagerly loaded.
         | 
| @@ -19,6 +26,15 @@ module Opal | |
| 19 26 | 
             
                  end
         | 
| 20 27 |  | 
| 21 28 | 
             
                  initializer 'opal.asset_paths', :after => 'sprockets.environment', :group => :all do |app|
         | 
| 29 | 
            +
                    if app.config.opal.enable_specs
         | 
| 30 | 
            +
                      spec_location = app.root.join(app.config.opal.spec_location).to_s
         | 
| 31 | 
            +
                      runner_dir = ::Opal::Rails::SpecBuilder.runner_dir(app.root)
         | 
| 32 | 
            +
                      runner_dir.mkpath
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                      app.assets.append_path runner_dir.to_s
         | 
| 35 | 
            +
                      app.assets.append_path spec_location
         | 
| 36 | 
            +
                    end
         | 
| 37 | 
            +
             | 
| 22 38 | 
             
                    Opal.paths.each do |path|
         | 
| 23 39 | 
             
                      app.assets.append_path path
         | 
| 24 40 | 
             
                    end
         | 
| @@ -35,13 +51,18 @@ module Opal | |
| 35 51 | 
             
                    end
         | 
| 36 52 |  | 
| 37 53 | 
             
                    app.routes.prepend do
         | 
| 38 | 
            -
                      if Opal::Processor.source_map_enabled
         | 
| 39 | 
            -
                         | 
| 40 | 
            -
                        maps_app | 
| 41 | 
            -
             | 
| 54 | 
            +
                      if Opal::Processor.source_map_enabled && config.assets.compile && config.assets.debug
         | 
| 55 | 
            +
                        maps_prefix = '/__OPAL_SOURCE_MAPS__'
         | 
| 56 | 
            +
                        maps_app    = Opal::SourceMapServer.new(app.assets, maps_prefix)
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                        ::Opal::Sprockets::SourceMapHeaderPatch.inject!(maps_prefix)
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                        mount maps_app => maps_prefix
         | 
| 42 61 | 
             
                      end
         | 
| 43 62 |  | 
| 44 | 
            -
                       | 
| 63 | 
            +
                      if app.config.opal.enable_specs
         | 
| 64 | 
            +
                        get '/opal_spec' => 'opal_spec#run', as: :opal_spec
         | 
| 65 | 
            +
                      end
         | 
| 45 66 | 
             
                    end
         | 
| 46 67 | 
             
                  end
         | 
| 47 68 |  | 
| @@ -0,0 +1,92 @@ | |
| 1 | 
            +
            require 'digest'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Opal
         | 
| 4 | 
            +
              module Rails
         | 
| 5 | 
            +
                class SpecBuilder
         | 
| 6 | 
            +
                  def initialize(options)
         | 
| 7 | 
            +
                    @root = options.fetch(:root) { ::Rails.root }
         | 
| 8 | 
            +
                    @pattern = options[:pattern] || '**/*_spec'
         | 
| 9 | 
            +
                    @sprockets = options.fetch(:sprockets)
         | 
| 10 | 
            +
                    @spec_location = options.fetch(:spec_location)
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  attr_reader :sprockets, :pattern, :spec_location, :root
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                  def to_s
         | 
| 16 | 
            +
                    builder.build_str main_code, 'opal_spec'
         | 
| 17 | 
            +
                    builder.to_s + 'Opal.load("opal_spec");'
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  def builder
         | 
| 21 | 
            +
                    @builder ||= begin
         | 
| 22 | 
            +
                      path_finder = Opal::HikePathFinder.new(paths)
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                      Opal::Builder.new(
         | 
| 25 | 
            +
                        compiler_options: Opal::Processor.compiler_options,
         | 
| 26 | 
            +
                        stubs:            Opal::Processor.stubbed_files,
         | 
| 27 | 
            +
                        path_reader:      Opal::PathReader.new(path_finder),
         | 
| 28 | 
            +
                      )
         | 
| 29 | 
            +
                    end
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                  def paths
         | 
| 33 | 
            +
                    [
         | 
| 34 | 
            +
                      root.join(spec_location).to_s,
         | 
| 35 | 
            +
                      runner_dir.to_s,
         | 
| 36 | 
            +
                      *Opal.paths,
         | 
| 37 | 
            +
                      *sprockets.paths,
         | 
| 38 | 
            +
                    ]
         | 
| 39 | 
            +
                  end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                  def self.runner_dir(root)
         | 
| 42 | 
            +
                    root.join('tmp/opal_spec')
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                  def runner_dir
         | 
| 46 | 
            +
                    self.class.runner_dir(root)
         | 
| 47 | 
            +
                  end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                  def main_code
         | 
| 50 | 
            +
                    requires.map { |file| "require #{file.inspect}\n" }.join + boot_code
         | 
| 51 | 
            +
                  end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                  def runner_pathname
         | 
| 54 | 
            +
                    runner_dir.join("#{runner_logical_path}.js.rb")
         | 
| 55 | 
            +
                  end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                  def runner_logical_path
         | 
| 58 | 
            +
                    "opal_spec_runner_#{digest}"
         | 
| 59 | 
            +
                  end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                  def digest
         | 
| 62 | 
            +
                    # The digest is cached as it shouldn't change
         | 
| 63 | 
            +
                    # for a given builder instance
         | 
| 64 | 
            +
                    @digest ||= Digest::SHA1.new.update(requires.join).to_s
         | 
| 65 | 
            +
                  end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                  def requires
         | 
| 68 | 
            +
                    ['opal', 'opal-rspec', *clean_spec_files]
         | 
| 69 | 
            +
                  end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                  def clean_spec_files
         | 
| 72 | 
            +
                    spec_files.map{|f| clean_spec_path(f)}
         | 
| 73 | 
            +
                  end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                  def boot_code
         | 
| 76 | 
            +
                    'Opal::RSpec::Runner.autorun'
         | 
| 77 | 
            +
                  end
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                  def spec_files
         | 
| 80 | 
            +
                    @spec_files ||= pattern.split(':').map { |path| spec_files_for_glob(path) }.flatten
         | 
| 81 | 
            +
                  end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                  def spec_files_for_glob(glob)
         | 
| 84 | 
            +
                    Dir[root.join("#{spec_location}/#{glob}{,.js}.{rb,opal}").to_s]
         | 
| 85 | 
            +
                  end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                  def clean_spec_path(path)
         | 
| 88 | 
            +
                    path.split("#{spec_location}/").flatten.last.gsub(/(\.js)?\.(rb|opal)$/, '')
         | 
| 89 | 
            +
                  end
         | 
| 90 | 
            +
                end
         | 
| 91 | 
            +
              end
         | 
| 92 | 
            +
            end
         | 
    
        data/lib/opal/rails/version.rb
    CHANGED
    
    
| @@ -15,7 +15,7 @@ module Opal | |
| 15 15 | 
             
                  end
         | 
| 16 16 |  | 
| 17 17 | 
             
                  def copy_opal
         | 
| 18 | 
            -
                    template 'javascript.js.rb', File.join('app/assets/javascripts',  | 
| 18 | 
            +
                    template 'javascript.js.rb', File.join('app/assets/javascripts', "#{controller_name.underscore}_view.js.rb")
         | 
| 19 19 | 
             
                  end
         | 
| 20 20 | 
             
                end
         | 
| 21 21 | 
             
              end
         | 
| @@ -1,27 +1,26 @@ | |
| 1 1 | 
             
            require 'opal/rspec/rake_task'
         | 
| 2 2 |  | 
| 3 3 | 
             
            Opal::RSpec::RakeTask.new('opal:spec' => :environment) do |server|
         | 
| 4 | 
            -
              require ' | 
| 4 | 
            +
              require 'opal/rails/spec_builder'
         | 
| 5 | 
            +
              pattern = ENV['PATTERN'] || nil
         | 
| 5 6 |  | 
| 6 | 
            -
               | 
| 7 | 
            -
             | 
| 7 | 
            +
              builder = Opal::Rails::SpecBuilder.new(
         | 
| 8 | 
            +
                spec_location: Rails.application.config.opal.spec_location,
         | 
| 9 | 
            +
                sprockets: Rails.application.config.assets,
         | 
| 10 | 
            +
                pattern: pattern,
         | 
| 11 | 
            +
              )
         | 
| 8 12 |  | 
| 9 | 
            -
               | 
| 10 | 
            -
               | 
| 11 | 
            -
               | 
| 13 | 
            +
              runner = builder.runner_pathname
         | 
| 14 | 
            +
              runner.dirname.mkpath
         | 
| 15 | 
            +
              runner.open('w') { |f| f << builder.main_code }
         | 
| 12 16 |  | 
| 13 | 
            -
               | 
| 17 | 
            +
              server.sprockets.clear_paths
         | 
| 18 | 
            +
              builder.paths.each { |path| server.append_path path }
         | 
| 14 19 |  | 
| 15 | 
            -
               | 
| 16 | 
            -
              required_assets << 'opal-rspec-runner'
         | 
| 20 | 
            +
              main_name = builder.runner_logical_path
         | 
| 17 21 |  | 
| 18 | 
            -
               | 
| 19 | 
            -
             | 
| 20 | 
            -
                  spec = spec[path.size+1..-1] # +1 is for the trailing slash
         | 
| 21 | 
            -
                  required_assets << spec
         | 
| 22 | 
            -
                end
         | 
| 23 | 
            -
              end
         | 
| 22 | 
            +
              # Sometimes seems that sprockets will need a moment to pickup the new file
         | 
| 23 | 
            +
              sleep 0.1 unless server.sprockets[main_name]
         | 
| 24 24 |  | 
| 25 | 
            -
               | 
| 26 | 
            -
              tempfile.close
         | 
| 25 | 
            +
              server.main = main_name
         | 
| 27 26 | 
             
            end
         | 
    
        data/opal-rails.gemspec
    CHANGED
    
    | @@ -22,9 +22,9 @@ Gem::Specification.new do |s| | |
| 22 22 | 
             
              required_ruby_version = '>= 1.9.3'
         | 
| 23 23 |  | 
| 24 24 | 
             
              s.add_dependency 'rails',               '>= 3.2', '< 5.0'
         | 
| 25 | 
            -
              s.add_dependency 'opal',                '~> 0. | 
| 26 | 
            -
              s.add_dependency 'opal-jquery',         '~> 0.3.0 | 
| 27 | 
            -
              s.add_dependency 'opal-rspec',          '~> 0.4. | 
| 25 | 
            +
              s.add_dependency 'opal',                '~> 0.8.0.rc'
         | 
| 26 | 
            +
              s.add_dependency 'opal-jquery',         '~> 0.3.0'
         | 
| 27 | 
            +
              s.add_dependency 'opal-rspec',          '~> 0.4.2'
         | 
| 28 28 | 
             
              s.add_dependency 'jquery-rails'
         | 
| 29 29 | 
             
              s.add_dependency 'opal-activesupport',  '>= 0.0.5'
         | 
| 30 30 |  | 
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe OpalHelper do
         | 
| 4 | 
            +
              subject(:helper) { double.extend described_class }
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              describe '#opal_tag' do
         | 
| 7 | 
            +
                it 'compiles to js' do
         | 
| 8 | 
            +
                  allow(helper).to receive(:javascript_tag) { |code| code }
         | 
| 9 | 
            +
                  ruby_code = 'puts 5'
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  expect(Opal::Compiler).to receive(:new)
         | 
| 12 | 
            +
                    .with(ruby_code, hash_including(requirable: false))
         | 
| 13 | 
            +
                    .and_call_original
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                  expect(helper.opal_tag(ruby_code)).to include('.$puts(')
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
            end
         | 
| @@ -26,13 +26,14 @@ describe 'controller assignments' do | |
| 26 26 | 
             
              end
         | 
| 27 27 |  | 
| 28 28 | 
             
              def opal_eval source
         | 
| 29 | 
            -
                 | 
| 29 | 
            +
                builder = Opal::Builder.new
         | 
| 30 | 
            +
                builder.build 'opal'
         | 
| 30 31 |  | 
| 31 32 | 
             
                # Any lib should be already required in the page,
         | 
| 32 33 | 
             
                # require won't work in this kind of templates.
         | 
| 33 | 
            -
                 | 
| 34 | 
            +
                builder.build 'native'
         | 
| 34 35 |  | 
| 35 | 
            -
                context = ExecJS.compile  | 
| 36 | 
            +
                context = ExecJS.compile builder.to_s
         | 
| 36 37 | 
             
                context.eval source
         | 
| 37 38 | 
             
              rescue
         | 
| 38 39 | 
             
                $!.message << "\n\n#{source}"
         | 
| @@ -3,17 +3,19 @@ require 'spec_helper' | |
| 3 3 | 
             
            feature 'In-browser specs runner' do
         | 
| 4 4 | 
             
              scenario 'runs all specs', :js do
         | 
| 5 5 | 
             
                visit '/opal_spec'
         | 
| 6 | 
            -
             | 
| 7 | 
            -
                page.should have_content(' | 
| 8 | 
            -
                page.should have_content(' | 
| 9 | 
            -
                page.should have_content(' | 
| 6 | 
            +
                page.should have_content('example_spec ')
         | 
| 7 | 
            +
                page.should have_content('requires_opal_spec ')
         | 
| 8 | 
            +
                page.should have_content('subdirectory/other_spec ')
         | 
| 9 | 
            +
                page.should have_content('3 examples, 0 failures')
         | 
| 10 10 | 
             
              end
         | 
| 11 11 |  | 
| 12 12 | 
             
              scenario "runs single spec file", :js do
         | 
| 13 13 | 
             
                visit '/opal_spec'
         | 
| 14 | 
            -
                click_link 'subdirectory/other_spec | 
| 14 | 
            +
                click_link 'subdirectory/other_spec'
         | 
| 15 15 |  | 
| 16 | 
            -
                page. | 
| 16 | 
            +
                page.should_not have_content('example_spec ')
         | 
| 17 | 
            +
                page.should_not have_content('requires_opal_spec ')
         | 
| 18 | 
            +
                page.should have_content('subdirectory/other_spec ')
         | 
| 17 19 | 
             
                page.should have_content('1 examples, 0 failures')
         | 
| 18 20 | 
             
              end
         | 
| 19 21 | 
             
            end
         | 
| @@ -2,10 +2,12 @@ require 'spec_helper' | |
| 2 2 | 
             
            require 'opal/source_map'
         | 
| 3 3 |  | 
| 4 4 | 
             
            describe Opal::SourceMap do
         | 
| 5 | 
            -
              let(:js_asset_path) { '/assets/source_map_example.js' }
         | 
| 5 | 
            +
              let(:js_asset_path) { '/assets/source_map_example.self.js' }
         | 
| 6 6 |  | 
| 7 7 | 
             
              before do
         | 
| 8 8 | 
             
                expect(Rails.application.config.opal.source_map_enabled).to be_truthy
         | 
| 9 | 
            +
                expect(Rails.application.config.assets.compile).to be_truthy
         | 
| 10 | 
            +
                expect(Rails.application.config.assets.debug).to be_truthy
         | 
| 9 11 | 
             
                get js_asset_path
         | 
| 10 12 | 
             
              end
         | 
| 11 13 |  | 
| @@ -32,10 +34,9 @@ describe Opal::SourceMap do | |
| 32 34 |  | 
| 33 35 | 
             
              def extract_map_path response
         | 
| 34 36 | 
             
                source_map_regexp = %r{^//[@#] sourceMappingURL=([^\n]+)}
         | 
| 35 | 
            -
                 | 
| 36 | 
            -
             | 
| 37 | 
            -
                             flatten.first.to_s.strip)
         | 
| 38 | 
            -
                File.join(File.dirname(js_asset_path), map_path) if map_path
         | 
| 39 | 
            -
              end
         | 
| 37 | 
            +
                header_map_path = response.headers['X-SourceMap'].presence
         | 
| 38 | 
            +
                comment_map_path = response.body.scan(source_map_regexp).flatten.first.to_s.strip.presence
         | 
| 40 39 |  | 
| 40 | 
            +
                header_map_path or comment_map_path
         | 
| 41 | 
            +
              end
         | 
| 41 42 | 
             
            end
         | 
| @@ -9,7 +9,7 @@ TestApp::Application.configure do | |
| 9 9 | 
             
              config.action_controller.perform_caching = true
         | 
| 10 10 |  | 
| 11 11 | 
             
              # Disable Rails's static asset server (Apache or nginx will already do this)
         | 
| 12 | 
            -
              config. | 
| 12 | 
            +
              config.serve_static_files = false
         | 
| 13 13 |  | 
| 14 14 | 
             
              # Compress JavaScripts and CSS
         | 
| 15 15 | 
             
              config.assets.compress = true
         | 
| @@ -8,7 +8,7 @@ TestApp::Application.configure do | |
| 8 8 | 
             
              config.cache_classes = true
         | 
| 9 9 |  | 
| 10 10 | 
             
              # Configure static asset server for tests with Cache-Control for performance
         | 
| 11 | 
            -
              config. | 
| 11 | 
            +
              config.serve_static_files = true
         | 
| 12 12 | 
             
              config.static_cache_control = "public, max-age=3600"
         | 
| 13 13 |  | 
| 14 14 | 
             
              # Log error messages when you accidentally call methods on nil
         | 
| @@ -34,4 +34,9 @@ TestApp::Application.configure do | |
| 34 34 | 
             
              config.active_support.deprecation = :stderr
         | 
| 35 35 |  | 
| 36 36 | 
             
              config.eager_load = false if Rails.version.to_i == 4
         | 
| 37 | 
            +
             | 
| 38 | 
            +
             | 
| 39 | 
            +
              # Allow sourcemaps to be compiled in test mode
         | 
| 40 | 
            +
              config.assets.debug = true
         | 
| 41 | 
            +
              config.assets.compile = true
         | 
| 37 42 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: opal-rails
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.8.0.rc1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Elia Schito
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015- | 
| 11 | 
            +
            date: 2015-06-12 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rails
         | 
| @@ -36,42 +36,42 @@ dependencies: | |
| 36 36 | 
             
                requirements:
         | 
| 37 37 | 
             
                - - "~>"
         | 
| 38 38 | 
             
                  - !ruby/object:Gem::Version
         | 
| 39 | 
            -
                    version: 0. | 
| 39 | 
            +
                    version: 0.8.0.rc
         | 
| 40 40 | 
             
              type: :runtime
         | 
| 41 41 | 
             
              prerelease: false
         | 
| 42 42 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 43 43 | 
             
                requirements:
         | 
| 44 44 | 
             
                - - "~>"
         | 
| 45 45 | 
             
                  - !ruby/object:Gem::Version
         | 
| 46 | 
            -
                    version: 0. | 
| 46 | 
            +
                    version: 0.8.0.rc
         | 
| 47 47 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 48 48 | 
             
              name: opal-jquery
         | 
| 49 49 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 50 50 | 
             
                requirements:
         | 
| 51 51 | 
             
                - - "~>"
         | 
| 52 52 | 
             
                  - !ruby/object:Gem::Version
         | 
| 53 | 
            -
                    version: 0.3.0 | 
| 53 | 
            +
                    version: 0.3.0
         | 
| 54 54 | 
             
              type: :runtime
         | 
| 55 55 | 
             
              prerelease: false
         | 
| 56 56 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 57 57 | 
             
                requirements:
         | 
| 58 58 | 
             
                - - "~>"
         | 
| 59 59 | 
             
                  - !ruby/object:Gem::Version
         | 
| 60 | 
            -
                    version: 0.3.0 | 
| 60 | 
            +
                    version: 0.3.0
         | 
| 61 61 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 62 62 | 
             
              name: opal-rspec
         | 
| 63 63 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 64 64 | 
             
                requirements:
         | 
| 65 65 | 
             
                - - "~>"
         | 
| 66 66 | 
             
                  - !ruby/object:Gem::Version
         | 
| 67 | 
            -
                    version: 0.4. | 
| 67 | 
            +
                    version: 0.4.2
         | 
| 68 68 | 
             
              type: :runtime
         | 
| 69 69 | 
             
              prerelease: false
         | 
| 70 70 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 71 71 | 
             
                requirements:
         | 
| 72 72 | 
             
                - - "~>"
         | 
| 73 73 | 
             
                  - !ruby/object:Gem::Version
         | 
| 74 | 
            -
                    version: 0.4. | 
| 74 | 
            +
                    version: 0.4.2
         | 
| 75 75 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 76 76 | 
             
              name: jquery-rails
         | 
| 77 77 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -165,6 +165,7 @@ extra_rdoc_files: [] | |
| 165 165 | 
             
            files:
         | 
| 166 166 | 
             
            - ".gitignore"
         | 
| 167 167 | 
             
            - ".rspec"
         | 
| 168 | 
            +
            - ".spectator.rb"
         | 
| 168 169 | 
             
            - ".travis.yml"
         | 
| 169 170 | 
             
            - CHANGELOG.md
         | 
| 170 171 | 
             
            - Gemfile
         | 
| @@ -174,13 +175,13 @@ files: | |
| 174 175 | 
             
            - app/helpers/opal_helper.rb
         | 
| 175 176 | 
             
            - app/views/layouts/opal_spec.html.erb
         | 
| 176 177 | 
             
            - app/views/opal_spec/run.html.erb
         | 
| 177 | 
            -
            - lib/assets/javascripts/ | 
| 178 | 
            -
            - lib/assets/javascripts/opal_ujs.js
         | 
| 178 | 
            +
            - lib/assets/javascripts/opal_ujs.js.rb
         | 
| 179 179 | 
             
            - lib/opal-rails.rb
         | 
| 180 180 | 
             
            - lib/opal/rails.rb
         | 
| 181 181 | 
             
            - lib/opal/rails/engine.rb
         | 
| 182 182 | 
             
            - lib/opal/rails/haml_filter.rb
         | 
| 183 183 | 
             
            - lib/opal/rails/slim_filter.rb
         | 
| 184 | 
            +
            - lib/opal/rails/spec_builder.rb
         | 
| 184 185 | 
             
            - lib/opal/rails/sprockets_cache_key_fix.rb
         | 
| 185 186 | 
             
            - lib/opal/rails/template_handler.rb
         | 
| 186 187 | 
             
            - lib/opal/rails/version.rb
         | 
| @@ -189,6 +190,7 @@ files: | |
| 189 190 | 
             
            - lib/tasks/opal-rails_tasks.rake
         | 
| 190 191 | 
             
            - opal-rails.gemspec
         | 
| 191 192 | 
             
            - script/rails
         | 
| 193 | 
            +
            - spec/helpers/opal_helper_spec.rb
         | 
| 192 194 | 
             
            - spec/integration/assigns_spec.rb
         | 
| 193 195 | 
             
            - spec/integration/in_browser_specs_spec.rb
         | 
| 194 196 | 
             
            - spec/integration/source_map_spec.rb
         | 
| @@ -200,9 +202,6 @@ files: | |
| 200 202 | 
             
            - test_app/app/assets/images/rails.png
         | 
| 201 203 | 
             
            - test_app/app/assets/javascripts/application.js
         | 
| 202 204 | 
             
            - test_app/app/assets/javascripts/source_map_example.js.rb
         | 
| 203 | 
            -
            - test_app/app/assets/javascripts/spec.js
         | 
| 204 | 
            -
            - test_app/app/assets/javascripts/spec/example_spec.js.rb
         | 
| 205 | 
            -
            - test_app/app/assets/javascripts/spec/subdirectory/other_spec.js.rb
         | 
| 206 205 | 
             
            - test_app/app/assets/stylesheets/application.css
         | 
| 207 206 | 
             
            - test_app/app/controllers/application_controller.rb
         | 
| 208 207 | 
             
            - test_app/app/views/application/index.html.erb
         | 
| @@ -232,6 +231,10 @@ files: | |
| 232 231 | 
             
            - test_app/public/favicon.ico
         | 
| 233 232 | 
             
            - test_app/public/robots.txt
         | 
| 234 233 | 
             
            - test_app/script/rails
         | 
| 234 | 
            +
            - test_app/spec-opal/example_spec.js.rb
         | 
| 235 | 
            +
            - test_app/spec-opal/requires_opal_spec.js.rb
         | 
| 236 | 
            +
            - test_app/spec-opal/spec_helper.rb
         | 
| 237 | 
            +
            - test_app/spec-opal/subdirectory/other_spec.js.rb
         | 
| 235 238 | 
             
            homepage: http://elia.github.com/opal-rails
         | 
| 236 239 | 
             
            licenses:
         | 
| 237 240 | 
             
            - MIT-LICENSE
         | 
| @@ -247,16 +250,17 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 247 250 | 
             
                  version: '0'
         | 
| 248 251 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 249 252 | 
             
              requirements:
         | 
| 250 | 
            -
              - - " | 
| 253 | 
            +
              - - ">"
         | 
| 251 254 | 
             
                - !ruby/object:Gem::Version
         | 
| 252 | 
            -
                  version:  | 
| 255 | 
            +
                  version: 1.3.1
         | 
| 253 256 | 
             
            requirements: []
         | 
| 254 257 | 
             
            rubyforge_project: opal-rails
         | 
| 255 | 
            -
            rubygems_version: 2.4. | 
| 258 | 
            +
            rubygems_version: 2.4.5
         | 
| 256 259 | 
             
            signing_key: 
         | 
| 257 260 | 
             
            specification_version: 4
         | 
| 258 261 | 
             
            summary: Rails bindings for opal JS engine
         | 
| 259 262 | 
             
            test_files:
         | 
| 263 | 
            +
            - spec/helpers/opal_helper_spec.rb
         | 
| 260 264 | 
             
            - spec/integration/assigns_spec.rb
         | 
| 261 265 | 
             
            - spec/integration/in_browser_specs_spec.rb
         | 
| 262 266 | 
             
            - spec/integration/source_map_spec.rb
         | 
| @@ -1 +0,0 @@ | |
| 1 | 
            -
            // = require_tree ./spec
         |