opal-rails 1.1.1 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/{main.yml → build.yml} +13 -6
- data/.gitignore +1 -0
- data/Appraisals +17 -16
- data/CHANGELOG.md +49 -0
- data/Gemfile +8 -3
- data/README.md +50 -16
- data/app/helpers/opal_helper.rb +6 -5
- data/bin/rackup +29 -0
- data/bin/rails +8 -0
- data/bin/rails-engine +13 -0
- data/bin/rails-sandbox +18 -0
- data/bin/rake +29 -0
- data/bin/rspec +29 -0
- data/bin/sandbox +39 -0
- data/bin/sandbox-setup +14 -0
- data/bin/setup +8 -0
- data/config.ru +1 -2
- data/gemfiles/rails_6_0_opal_1_0.gemfile +1 -3
- data/gemfiles/rails_6_0_opal_1_1.gemfile +9 -0
- data/gemfiles/rails_6_0_opal_1_3.gemfile +10 -0
- data/gemfiles/rails_6_0_opal_1_4.gemfile +10 -0
- data/gemfiles/rails_6_1_opal_1_0.gemfile +10 -0
- data/gemfiles/rails_6_1_opal_1_1.gemfile +9 -0
- data/gemfiles/rails_6_1_opal_1_3.gemfile +10 -0
- data/gemfiles/rails_6_1_opal_1_4.gemfile +10 -0
- data/gemfiles/rails_7_0_opal_1_0.gemfile +10 -0
- data/gemfiles/rails_7_0_opal_1_3.gemfile +10 -0
- data/gemfiles/rails_7_0_opal_1_4.gemfile +10 -0
- data/lib/assets/javascripts/opal_ujs.js.rb +1 -4
- data/lib/generators/opal/assets/assets_generator.rb +7 -0
- data/lib/{rails/generators → generators}/opal/assets/templates/javascript.js.rb +0 -0
- data/lib/generators/opal/install/USAGE +8 -0
- data/lib/generators/opal/install/install_generator.rb +14 -0
- data/lib/generators/opal/install/templates/application.js.rb +12 -0
- data/lib/generators/opal/install/templates/initializer.rb +22 -0
- data/lib/opal/rails/engine.rb +1 -0
- data/lib/opal/rails/template_handler.rb +4 -2
- data/lib/opal/rails/version.rb +1 -1
- data/lib/opal/rails.rb +0 -4
- data/opal-rails.gemspec +45 -40
- data/spec/helpers/opal_helper_spec.rb +23 -9
- data/spec/integration/source_map_spec.rb +9 -5
- data/spec/support/test_app.rb +1 -2
- data/test_apps/{application_controller.rb → app/application_controller.rb} +1 -1
- data/test_apps/app/assets/config/manifest.js +1 -0
- data/test_apps/{assets → app/assets}/javascripts/application.js.rb +1 -0
- data/test_apps/{assets → app/assets}/javascripts/bar.rb +0 -0
- data/test_apps/{assets → app/assets}/javascripts/foo.js.rb +0 -0
- data/test_apps/{assets → app/assets}/javascripts/source_map_example.js.rb +0 -0
- data/test_apps/{assets → app/assets}/javascripts/with_assignments.js.rb +0 -0
- data/test_apps/{rails6.rb → rails.rb} +1 -3
- metadata +56 -83
- data/gemfiles/rails_5_1_opal_1_0.gemfile +0 -12
- data/gemfiles/rails_5_1_opal_master.gemfile +0 -11
- data/gemfiles/rails_5_2_opal_1_0.gemfile +0 -12
- data/gemfiles/rails_5_2_opal_master.gemfile +0 -11
- data/gemfiles/rails_6_0_opal_master.gemfile +0 -11
- data/lib/rails/generators/opal/assets/assets_generator.rb +0 -12
- data/test_apps/rails5.rb +0 -50
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aee279d2054d467d1e1c9088a1342fe8d75e7ec2affce2504b61b9b885cdb38b
|
4
|
+
data.tar.gz: 4828f47994349fff41a915fd3e21ea7b83052b3eb1ca5c56d3b09fe77676f22d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44de5b40a2352e01fe1f830f35a79ffa4509078002bef98689fbd4827ed5e53b34b141155dddd982515debc70b018c1eece879ca2957bcbfc9c81bca9600b764
|
7
|
+
data.tar.gz: 8b89cfd6f4778b746f8977f0bb20729766603b97840b56068bfa3ad04113aa8ac9cd2859616885b226c0252dd4114e00b2053aaee828715cbcd0bf94e49b7e5e
|
@@ -1,13 +1,20 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
on:
|
2
|
+
pull_request:
|
3
|
+
branches:
|
4
|
+
- master
|
5
|
+
push:
|
6
|
+
branches:
|
7
|
+
- ci-check
|
8
|
+
- "*/ci-check"
|
9
|
+
- master
|
3
10
|
|
4
11
|
jobs:
|
5
12
|
build:
|
6
13
|
strategy:
|
7
14
|
matrix:
|
8
|
-
ruby: ['2.
|
9
|
-
rails: ['
|
10
|
-
opal: ['opal_1_0', '
|
15
|
+
ruby: ['2.7', '3.0'] # ['3.1'] - enable once Rails 7.0.1 is released
|
16
|
+
rails: ['rails_6_0', 'rails_6_1', 'rails_7_0']
|
17
|
+
opal: ['opal_1_0', 'opal_1_3', 'opal_1_4']
|
11
18
|
runs-on: ubuntu-latest
|
12
19
|
|
13
20
|
steps:
|
@@ -17,7 +24,7 @@ jobs:
|
|
17
24
|
sudo apt-get install -y sqlite3 libsqlite3-dev
|
18
25
|
- uses: actions/checkout@v1
|
19
26
|
- name: Set up Ruby
|
20
|
-
uses:
|
27
|
+
uses: ruby/setup-ruby@v1
|
21
28
|
with:
|
22
29
|
ruby-version: ${{ matrix.ruby }}
|
23
30
|
- name: Install Dependencies
|
data/.gitignore
CHANGED
data/Appraisals
CHANGED
@@ -1,39 +1,40 @@
|
|
1
1
|
current_ruby = Gem::Version.new(RUBY_VERSION)
|
2
|
-
ruby_2_4_0 = Gem::Version.new('2.4.0')
|
3
2
|
ruby_2_5_0 = Gem::Version.new('2.5.0')
|
3
|
+
ruby_2_7_0 = Gem::Version.new('2.7.0')
|
4
4
|
|
5
5
|
ENV['OPAL_VERSION'] = nil # ensure the env is clean
|
6
6
|
|
7
7
|
github = -> repo_name { "https://github.com/#{repo_name}.git" }
|
8
8
|
|
9
9
|
{
|
10
|
+
opal_1_4: -> gemfile do
|
11
|
+
gemfile.gem 'opal', '~> 1.4.0'
|
12
|
+
gemfile.gem 'opal-sprockets'
|
13
|
+
end,
|
10
14
|
|
11
|
-
|
12
|
-
gemfile.gem 'opal',
|
13
|
-
gemfile.gem 'opal-
|
14
|
-
gemfile.gem 'opal-sprockets', git: github['opal/opal-sprockets'], branch: :master
|
15
|
+
opal_1_3: -> gemfile do
|
16
|
+
gemfile.gem 'opal', '~> 1.3.0'
|
17
|
+
gemfile.gem 'opal-sprockets'
|
15
18
|
end,
|
16
19
|
|
17
20
|
opal_1_0: -> gemfile do
|
18
21
|
gemfile.gem 'opal', '~> 1.0.0'
|
19
|
-
gemfile.gem 'opal-rspec', git: github['opal/opal-rspec'], branch: :master
|
20
|
-
gemfile.gem 'opal-jquery', git: github['opal/opal-jquery'], branch: :master
|
21
22
|
gemfile.gem 'opal-sprockets'
|
22
23
|
end,
|
23
24
|
|
24
25
|
}.each do |opal_version, gem_opal|
|
25
|
-
appraise "
|
26
|
-
gem "rails", "~>
|
26
|
+
appraise "rails_6_0_#{opal_version}" do
|
27
|
+
gem "rails", "~> 6.0.0"
|
27
28
|
gem_opal[self]
|
28
|
-
end if current_ruby >=
|
29
|
+
end if current_ruby >= ruby_2_5_0
|
29
30
|
|
30
|
-
appraise "
|
31
|
-
gem "rails", "~>
|
31
|
+
appraise "rails_6_1_#{opal_version}" do
|
32
|
+
gem "rails", "~> 6.1.0"
|
32
33
|
gem_opal[self]
|
33
|
-
end if current_ruby >=
|
34
|
+
end if current_ruby >= ruby_2_5_0
|
34
35
|
|
35
|
-
appraise "
|
36
|
-
gem "rails", "~>
|
36
|
+
appraise "rails_7_0_#{opal_version}" do
|
37
|
+
gem "rails", "~> 7.0.0"
|
37
38
|
gem_opal[self]
|
38
|
-
end if current_ruby >=
|
39
|
+
end if current_ruby >= ruby_2_7_0
|
39
40
|
end
|
data/CHANGELOG.md
CHANGED
@@ -20,6 +20,55 @@ Whitespace conventions:
|
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
+
## [2.0.2](https://github.com/opal/opal-rails/compare/v2.0.1...v2.0.2) - 2021-12-29
|
24
|
+
|
25
|
+
|
26
|
+
### Added
|
27
|
+
|
28
|
+
- Allow Rails 7
|
29
|
+
|
30
|
+
|
31
|
+
## [2.0.1](https://github.com/opal/opal-rails/compare/v2.0.0...v2.0.1) - 2021-03-03
|
32
|
+
|
33
|
+
|
34
|
+
### Added
|
35
|
+
|
36
|
+
- The install generator now will add an `opal.rb` initializer with a default compiler configuration and the template assign support disabled
|
37
|
+
|
38
|
+
### Fixed
|
39
|
+
|
40
|
+
- The install generator was missing a newline when changing the app layout
|
41
|
+
|
42
|
+
|
43
|
+
## [2.0.0](https://github.com/opal/opal-rails/compare/v1.1.2...v2.0.0) - 2021-02-23
|
44
|
+
|
45
|
+
*This is a major version, since a number of dependencies are going to be opt-in and support for older Rails
|
46
|
+
and Sprockets versions is dropped*
|
47
|
+
|
48
|
+
### Added
|
49
|
+
|
50
|
+
- Added support for Rails v6.1
|
51
|
+
- Added a generator for the initial setup (`bin/rails generate opal:install`) that will configure sprockets and create the main `application.js.rb`
|
52
|
+
|
53
|
+
### Changed
|
54
|
+
|
55
|
+
- Now the template handler will encode/decode local and instance variables with ActiveSupport::JSON
|
56
|
+
|
57
|
+
### Removed
|
58
|
+
|
59
|
+
- Removed support for Rails 5.x
|
60
|
+
- `opal-jquery` and `opal-activesupport` are no longer dependencies of `opal-rails`, if you need them you'll need to require and setup them manually
|
61
|
+
|
62
|
+
|
63
|
+
## [1.1.2](https://github.com/opal/opal-rails/compare/v1.1.1...v1.1.2) - 2019-09-26
|
64
|
+
|
65
|
+
|
66
|
+
### Fixed
|
67
|
+
|
68
|
+
- Default `skip_onload` to `true` when `javascript_asset_tag` is in debug mode, otherwise some assets may be loaded in the browser after the main source, thus being never loading by the Opal runtime.
|
69
|
+
|
70
|
+
|
71
|
+
|
23
72
|
|
24
73
|
## [1.1.1](https://github.com/opal/opal-rails/compare/v1.1.0...v1.1.1) - 2019-09-14
|
25
74
|
|
data/Gemfile
CHANGED
@@ -2,10 +2,15 @@ source 'https://rubygems.org'
|
|
2
2
|
gemspec
|
3
3
|
github = -> repo { "https://github.com/#{repo}.git" }
|
4
4
|
|
5
|
-
|
5
|
+
case ENV['OPAL_VERSION']
|
6
|
+
when 'local'
|
7
|
+
gem 'opal', path: '../opal'
|
8
|
+
gem 'opal-rspec', path: '../opal-rspec'
|
9
|
+
gem 'opal-sprockets', path: '../opal-sprockets'
|
10
|
+
gem 'pry'
|
11
|
+
when 'master'
|
6
12
|
gem 'opal', git: github['opal/opal'], branch: :master
|
7
|
-
gem 'opal-rspec', git: github['opal/opal-rspec'], branch: :master
|
8
13
|
gem 'opal-sprockets', git: github['opal/opal-sprockets'], branch: :master
|
9
14
|
end
|
10
15
|
|
11
|
-
gem '
|
16
|
+
gem 'net-smtp'
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Opal Rails
|
2
2
|
|
3
|
-
[![Build Status](https://github.com/opal/opal-rails/workflows/
|
3
|
+
[![Build Status](https://github.com/opal/opal-rails/actions/workflows/build.yml/badge.svg)](https://github.com/opal/opal-rails/actions/workflows/build.yml)
|
4
4
|
[![Maintainability](https://api.codeclimate.com/v1/badges/31dda24adcecb836348f/maintainability)](https://codeclimate.com/github/opal/opal-rails/maintainability)
|
5
5
|
[![Gem Version](https://badge.fury.io/rb/opal-rails.svg)](http://badge.fury.io/rb/opal-rails)
|
6
6
|
![fun guaranteed](https://img.shields.io/badge/fun-guaranteed-brightgreen.svg)
|
@@ -8,12 +8,13 @@
|
|
8
8
|
|
9
9
|
_Rails bindings for [Opal](http://opalrb.com). ([Changelog](https://github.com/opal/opal-rails/blob/master/CHANGELOG.md))_
|
10
10
|
|
11
|
-
### Looking Webpack support? 👀
|
11
|
+
### Looking for Webpack support? 👀
|
12
12
|
|
13
13
|
If you want to integrate Opal via Webpack please refer to [opal-webpack-loader](https://github.com/isomorfeus/opal-webpack-loader#installation) installation instructions.
|
14
14
|
|
15
15
|
ℹ️ Webpack and ES6 modules are not yet officially supported, but we're working on it thanks to the awesome work done in _opal-webpack-loader_.
|
16
16
|
|
17
|
+
|
17
18
|
## Installation
|
18
19
|
|
19
20
|
In your `Gemfile`
|
@@ -22,36 +23,46 @@ In your `Gemfile`
|
|
22
23
|
gem 'opal-rails'
|
23
24
|
```
|
24
25
|
|
25
|
-
|
26
|
+
Add `app/assets/javascript` to your asset-pipeline manifest in `app/assets/config/manifest.js`:
|
26
27
|
|
27
|
-
```
|
28
|
-
rails
|
28
|
+
```
|
29
|
+
bin/rails opal:install
|
29
30
|
```
|
30
31
|
|
31
32
|
|
32
33
|
### Configuration
|
33
34
|
|
34
|
-
|
35
|
+
#### For the compiler
|
36
|
+
|
37
|
+
Add your configuration for the compiler:
|
38
|
+
|
39
|
+
`config/initializers/opal.rb`
|
35
40
|
|
36
41
|
```ruby
|
37
42
|
# Compiler options
|
38
|
-
Rails.application.config.opal.
|
39
|
-
Rails.application.config.opal.
|
40
|
-
Rails.application.config.opal.
|
41
|
-
Rails.application.config.opal.
|
43
|
+
Rails.application.config.opal.method_missing_enabled = true
|
44
|
+
Rails.application.config.opal.const_missing_enabled = true
|
45
|
+
Rails.application.config.opal.arity_check_enabled = true
|
46
|
+
Rails.application.config.opal.freezing_stubs_enabled = true
|
42
47
|
Rails.application.config.opal.dynamic_require_severity = :ignore
|
48
|
+
```
|
49
|
+
|
50
|
+
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).
|
43
51
|
|
44
|
-
|
52
|
+
#### For template assigns
|
45
53
|
|
46
|
-
|
47
|
-
|
54
|
+
Add your configuration for rendering assigns when using the template handler from actions:
|
55
|
+
|
56
|
+
`config/initializers/opal.rb`
|
57
|
+
|
58
|
+
```ruby
|
48
59
|
Rails.application.config.opal.assigns_in_templates = true
|
49
60
|
Rails.application.config.opal.assigns_in_templates = :locals # only locals
|
50
61
|
Rails.application.config.opal.assigns_in_templates = :ivars # only instance variables
|
51
62
|
```
|
52
63
|
|
53
|
-
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).
|
54
64
|
|
65
|
+
Local and instance variables will be sent down to the view after converting their values to JSON.
|
55
66
|
|
56
67
|
|
57
68
|
## Usage
|
@@ -190,7 +201,6 @@ Of course you need to require `haml-rails` separately since its presence is not
|
|
190
201
|
Element.find('.comments').effect(:fade_in)
|
191
202
|
end
|
192
203
|
end
|
193
|
-
|
194
204
|
```
|
195
205
|
|
196
206
|
|
@@ -256,10 +266,34 @@ Opal.use_gem 'cannonbol'
|
|
256
266
|
```
|
257
267
|
|
258
268
|
|
269
|
+
## Contributing
|
270
|
+
|
271
|
+
Run the specs:
|
272
|
+
|
273
|
+
```
|
274
|
+
bin/setup
|
275
|
+
bin/rake
|
276
|
+
```
|
277
|
+
|
278
|
+
Inspect the test app:
|
279
|
+
|
280
|
+
```
|
281
|
+
bin/rackup
|
282
|
+
# visit localhost:9292
|
283
|
+
```
|
284
|
+
|
285
|
+
Tinker with a sandbox app:
|
286
|
+
|
287
|
+
```
|
288
|
+
bin/sandbox # will re-create the app
|
289
|
+
bin/rails s # will start the sandbox app server
|
290
|
+
# visit localhost:3000
|
291
|
+
```
|
292
|
+
|
259
293
|
|
260
294
|
## License
|
261
295
|
|
262
|
-
© 2012-
|
296
|
+
© 2012-2021 Elia Schito
|
263
297
|
|
264
298
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
265
299
|
of this software and associated documentation files (the "Software"), to deal
|
data/app/helpers/opal_helper.rb
CHANGED
@@ -10,20 +10,21 @@ module OpalHelper
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def javascript_include_tag(*sources)
|
13
|
-
options = sources.extract_options
|
13
|
+
options = sources.extract_options!.symbolize_keys
|
14
|
+
debug = options[:debug] != false
|
14
15
|
skip_loader = options.delete(:skip_opal_loader)
|
15
|
-
|
16
|
+
force_opal_loader_tag = options.delete(:force_opal_loader_tag) || debug
|
16
17
|
|
17
|
-
return super(*sources, options) if skip_loader
|
18
|
+
return super(*sources, options) if skip_loader && !force_opal_loader_tag
|
18
19
|
|
19
20
|
script_tags = "".html_safe
|
20
21
|
sources.each do |source|
|
21
22
|
load_asset_code = Opal::Sprockets.load_asset(source)
|
22
23
|
loading_code = "if(window.Opal && Opal.modules[#{source.to_json}]){#{load_asset_code}}"
|
23
24
|
|
24
|
-
if
|
25
|
+
if force_opal_loader_tag
|
25
26
|
script_tags << super(source, options)
|
26
|
-
script_tags << javascript_tag(loading_code)
|
27
|
+
script_tags << "\n".html_safe + javascript_tag(loading_code)
|
27
28
|
else
|
28
29
|
script_tags << super(source, options.merge(onload: loading_code))
|
29
30
|
end
|
data/bin/rackup
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rackup' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rack", "rackup")
|
data/bin/rails
ADDED
data/bin/rails-engine
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# This command will automatically be run when you run "rails" with Rails gems
|
3
|
+
# installed from the root of your application.
|
4
|
+
|
5
|
+
ENGINE_ROOT = File.expand_path('..', __dir__)
|
6
|
+
ENGINE_PATH = File.expand_path('../lib/opal/rails/engine', __dir__)
|
7
|
+
|
8
|
+
# Set up gems listed in the Gemfile.
|
9
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
|
10
|
+
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
11
|
+
|
12
|
+
require 'rails/all'
|
13
|
+
require 'rails/engine/commands'
|
data/bin/rails-sandbox
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# frozen_string_literal: true
|
4
|
+
|
5
|
+
app_root = 'sandbox'
|
6
|
+
|
7
|
+
unless File.exist? "#{app_root}/bin/rails"
|
8
|
+
warn 'Creating the sandbox app...'
|
9
|
+
Dir.chdir "#{__dir__}/.." do
|
10
|
+
system "#{__dir__}/sandbox" or begin # rubocop:disable Style/AndOr
|
11
|
+
warn 'Automatic creation of the sandbox app failed'
|
12
|
+
exit 1
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
Dir.chdir app_root
|
18
|
+
exec 'bin/rails', *ARGV
|
data/bin/rake
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rake' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rake", "rake")
|
data/bin/rspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rspec' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rspec-core", "rspec")
|
data/bin/sandbox
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
gem_name="$(ruby -rpathname -e"puts Pathname(ARGV.first).join('../..').expand_path.glob('*.gemspec').first.basename('.gemspec')" -- $0)"
|
4
|
+
|
5
|
+
# Stay away from the bundler env of the containing extension.
|
6
|
+
function unbundled {
|
7
|
+
ruby -rbundler -e'b = proc {system *ARGV}; Bundler.respond_to?(:with_unbundled_env) ? Bundler.with_unbundled_env(&b) : Bundler.with_clean_env(&b)' -- $@
|
8
|
+
}
|
9
|
+
|
10
|
+
rm -rf ./sandbox
|
11
|
+
unbundled bundle exec rails new sandbox \
|
12
|
+
--skip-bundle \
|
13
|
+
--skip-git \
|
14
|
+
--skip-keeps \
|
15
|
+
--skip-rc \
|
16
|
+
--skip-spring \
|
17
|
+
--skip-test \
|
18
|
+
$@
|
19
|
+
|
20
|
+
if [ ! -d "sandbox" ]; then
|
21
|
+
echo 'sandbox rails application failed'
|
22
|
+
exit 1
|
23
|
+
fi
|
24
|
+
|
25
|
+
cd ./sandbox
|
26
|
+
cat <<RUBY >> Gemfile
|
27
|
+
gem '$gem_name', path: '..'
|
28
|
+
RUBY
|
29
|
+
|
30
|
+
unbundled bundle install --gemfile Gemfile
|
31
|
+
unbundled bin/rails webpacker:install
|
32
|
+
|
33
|
+
|
34
|
+
cd .. # Back to the project root.
|
35
|
+
bin/sandbox-setup # Run any custom setup.
|
36
|
+
|
37
|
+
echo
|
38
|
+
echo "🚀 Sandbox app successfully created for $gem_name!"
|
39
|
+
|
data/bin/sandbox-setup
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'pathname'
|
4
|
+
|
5
|
+
root = Pathname('sandbox')
|
6
|
+
|
7
|
+
system 'bin/rails g opal:install'
|
8
|
+
system 'bin/rails g controller home index -f'
|
9
|
+
|
10
|
+
root.join('config/routes.rb').write <<~RUBY
|
11
|
+
Rails.application.routes.draw do
|
12
|
+
root to: "home#index"
|
13
|
+
end
|
14
|
+
RUBY
|
data/bin/setup
ADDED
data/config.ru
CHANGED
@@ -2,9 +2,8 @@
|
|
2
2
|
|
3
3
|
require 'bundler/setup'
|
4
4
|
require 'rails'
|
5
|
-
rails_version = Rails::VERSION::MAJOR
|
6
5
|
ENV["RAILS_ENV"] = "test"
|
7
6
|
ENV['DATABASE_URL'] = 'sqlite3::memory:'
|
8
|
-
require_relative "test_apps/rails
|
7
|
+
require_relative "test_apps/rails"
|
9
8
|
|
10
9
|
run RailsApp::Application
|
@@ -2,11 +2,9 @@
|
|
2
2
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
|
-
gem "
|
5
|
+
gem "net-smtp"
|
6
6
|
gem "rails", "~> 6.0.0"
|
7
7
|
gem "opal", "~> 1.0.0"
|
8
|
-
gem "opal-rspec", git: "https://github.com/opal/opal-rspec.git", branch: :master
|
9
|
-
gem "opal-jquery", git: "https://github.com/opal/opal-jquery.git", branch: :master
|
10
8
|
gem "opal-sprockets"
|
11
9
|
|
12
10
|
gemspec path: "../"
|