native 0.0.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 29eb809760acf3c42c2744f3a9deda517221e6c8
4
- data.tar.gz: 0b841b1fc2421b31a7f3519b135635083a8f8c83
2
+ SHA256:
3
+ metadata.gz: 6a0f49ca96f43cc606c67f8d36983a1680534ad5099cef846bbf1a2ad9c67b70
4
+ data.tar.gz: 3547dcc23cc09bbae8daebbf422298891411502db16893c53235a3814704bc6a
5
5
  SHA512:
6
- metadata.gz: 4bae11e9ec10129f51f05498c78e4f1b08655f5c03470a8a68aa0eda5da653c95ef1532a14eba89c2d189bd2f588c25cded8b3b7023ad102b1808ea58628defc
7
- data.tar.gz: d0e933414208f11f2ad92315b539e4e28ecd5f0d0ccabc153e380758627e10ebf64ff72ea5899371a49cd88502d6bd6f80fe363e333de09dff0e547110536f4f
6
+ metadata.gz: a2af11d5c69359666db6ba567f95119a2fa358a988274fea0b9d4cf13cc874e341e8a59c51c47e45f17f6c6294528f9f0f2ffa1846e57c6600aa9119df705083
7
+ data.tar.gz: 1c3cb8e5f8acb4ed23b51d53eb87cf616c2915957e508015e3e46d2182639f9fe5952602a03cf5d54ff0b1a77bb7d73b2fb9a7983b050b84660d9a4d0a0bd665
@@ -5,9 +5,7 @@ Tell us what should happen
5
5
  Tell us what happens instead
6
6
 
7
7
  ### Steps to reproduce
8
-
9
- (Guidelines for creating a bug report are [available
10
- here](https://github.com/jonhue/native/wiki/Bug-reports))
8
+ Show a way to reproduce
11
9
 
12
10
  ### System configuration
13
11
 
@@ -16,6 +16,6 @@ CHANGELOG files by reviewers, please add the CHANGELOG entry at the top of the f
16
16
 
17
17
  Finally, if your pull request affects documentation or any non-code
18
18
  changes, guidelines for those changes are [available
19
- here](https://github.com/jonhue/native/CONTRIBUTING.md)
19
+ here](https://github.com/NativeGap/native-rails/blob/master/CONTRIBUTING.md)
20
20
 
21
21
  Thanks for contributing to Native!
data/.gitignore CHANGED
@@ -1,13 +1,8 @@
1
- *.gem
2
- *.rbc
3
- .DS_Store
4
- .bundle
5
- .rvmrc
6
- .ruby-version
7
- .yardoc
8
- .rake_tasks~
9
- coverage/*
10
- doc/*
11
- log/*
12
- pkg/*
13
- .idea/*
1
+ test/debug.log
2
+ coverage
3
+ rdoc
4
+ memory
5
+ *.gem
6
+ .rvmrc
7
+ Gemfile.lock
8
+ log
data/.travis.yml ADDED
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.3.3
data/CHANGELOG.md CHANGED
@@ -1,7 +1,9 @@
1
- ### unreleased
1
+ # Changelog
2
+
3
+ ### master
2
4
 
3
5
  * nothing yet
4
6
 
5
- ### 0.0.1 (Pre-release) - 2017-04-01
7
+ ### 1.0.0 - 2017-12-19
6
8
 
7
- Initial release
9
+ * initial release
@@ -0,0 +1,46 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
6
+
7
+ ## Our Standards
8
+
9
+ Examples of behavior that contributes to creating a positive environment include:
10
+
11
+ * Using welcoming and inclusive language
12
+ * Being respectful of differing viewpoints and experiences
13
+ * Gracefully accepting constructive criticism
14
+ * Focusing on what is best for the community
15
+ * Showing empathy towards other community members
16
+
17
+ Examples of unacceptable behavior by participants include:
18
+
19
+ * The use of sexualized language or imagery and unwelcome sexual attention or advances
20
+ * Trolling, insulting/derogatory comments, and personal or political attacks
21
+ * Public or private harassment
22
+ * Publishing others' private information, such as a physical or electronic address, without explicit permission
23
+ * Other conduct which could reasonably be considered inappropriate in a professional setting
24
+
25
+ ## Our Responsibilities
26
+
27
+ Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
28
+
29
+ Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
30
+
31
+ ## Scope
32
+
33
+ This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
34
+
35
+ ## Enforcement
36
+
37
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at help@slooob.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
38
+
39
+ Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
40
+
41
+ ## Attribution
42
+
43
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
44
+
45
+ [homepage]: http://contributor-covenant.org
46
+ [version]: http://contributor-covenant.org/version/1/4/
data/CONTRIBUTING.md CHANGED
@@ -0,0 +1 @@
1
+ # Contributing
data/DEPRECATIONS.md ADDED
@@ -0,0 +1 @@
1
+ # Deprecations
data/Gemfile CHANGED
@@ -1,12 +1,7 @@
1
- source "https://rubygems.org"
1
+ source 'http://rubygems.org'
2
2
 
3
- gemspec
4
-
5
-
6
- # Travis CI
7
- gem 'rspec-rails', '~> 3.5', '>= 3.5.2'
8
-
9
- # Development
10
- group :development do
11
- gem 'rubocop', '~> 0.47.1', require: false
3
+ git_source :github do |repo_name|
4
+ "https://github.com/#{repo_name}"
12
5
  end
6
+
7
+ gemspec
data/INSTALL.md CHANGED
@@ -1 +1,35 @@
1
1
  **Thank you for installing Native!**
2
+
3
+
4
+ There are three more steps to take:
5
+
6
+ 1) Run `rails g native` and `rails db:migrate`
7
+ 2) Add to `assets/manifest.js`:
8
+
9
+ //= link_directory ../native/android/javascripts .js
10
+ //= link_directory ../native/android/stylesheets .css
11
+ //= link_directory ../native/ios/javascripts .js
12
+ //= link_directory ../native/ios/stylesheets .css
13
+ //= link_directory ../native/uwp/javascripts .js
14
+ //= link_directory ../native/uwp/stylesheets .css
15
+ //= link_directory ../native/chrome/javascripts .js
16
+ //= link_directory ../native/chrome/stylesheets .css
17
+ //= link_directory ../native/osx/javascripts .js
18
+ //= link_directory ../native/osx/stylesheets .css
19
+ //= link_directory ../native/win32/javascripts .js
20
+ //= link_directory ../native/win32/stylesheets .css
21
+ //= link_directory ../native/win64/javascripts .js
22
+ //= link_directory ../native/win64/stylesheets .css
23
+ //= link_directory ../native/lin32/javascripts .js
24
+ //= link_directory ../native/lin32/stylesheets .css
25
+ //= link_directory ../native/lin64/javascripts .js
26
+ //= link_directory ../native/lin64/stylesheets .css
27
+ //= link_directory ../native/web/javascripts .js
28
+ //= link_directory ../native/web/stylesheets .css
29
+
30
+ 3) Mount engine in `config/routes.rb`:
31
+
32
+ mount Native::Engine, at: '/native'
33
+
34
+
35
+ Learn more at https://github.com/NativeGap/native-rails
data/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2017 Jonas Hübotter
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2017 Jonas Hübotter
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md CHANGED
@@ -1,2 +1,270 @@
1
- # native
2
- Building cross-platform apps with Rails
1
+ # Native
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/native.svg)](https://badge.fury.io/rb/native) <img src="https://travis-ci.org/NativeGap/native-rails.svg?branch=master" />
4
+
5
+ Creating cross-platform apps with Rails has never been this simple, pleasing & powerful. With very little code you can bring any Rails web application to every desktop or mobile platform you can think of.
6
+
7
+ **Features:**
8
+
9
+ * Convert your Rails app to a native app
10
+ * Add custom assets for any of your platforms
11
+ * Customize your code for every platform by utilizing Native's view helpers
12
+ * Remember what apps/platforms your users are on
13
+ * Add native notifications
14
+
15
+ **Platforms:**
16
+
17
+ * Android
18
+ * iOS
19
+ * Universal Windows Platform (Windows 10)
20
+ * Chrome
21
+ * OSX / MacOS
22
+ * Windows x32 / x64
23
+ * Linux x32 / x64
24
+
25
+ ---
26
+
27
+ Native is being powered by **[NativeGap](https://nativegap.com)**.
28
+
29
+ ---
30
+
31
+ ## Table of Contents
32
+
33
+ * [Installation](#installation)
34
+ * [Usage](#usage)
35
+ * [NativeGap](#nativegap)
36
+ * [Assets](#assets)
37
+ * [App methods](#app-methods)
38
+ * [View methods](#view-methods)
39
+ * [Notifications](#notifications)
40
+ * [Content scaling (Android)](#content-scaling-android)
41
+ * [Configuration](#configuration)
42
+ * [To Do](#to-do)
43
+ * [Contributing](#contributing)
44
+ * [Contributors](#contributors)
45
+ * [License](#license)
46
+
47
+ ---
48
+
49
+ ## Installation
50
+
51
+ Native works with Rails 5.0 onwards. You can add it to your `Gemfile` with:
52
+
53
+ ```ruby
54
+ gem 'native'
55
+ ```
56
+
57
+ And then execute:
58
+
59
+ $ bundle
60
+
61
+ Or install it yourself as:
62
+
63
+ $ gem install native
64
+
65
+ If you always want to be up to date fetch the latest from GitHub in your `Gemfile`:
66
+
67
+ ```ruby
68
+ gem 'native', github: 'NativeGap/native'
69
+ ```
70
+
71
+ Now run the generator:
72
+
73
+ $ rails g native
74
+
75
+ To wrap things up, migrate the changes into your database:
76
+
77
+ $ rails db:migrate
78
+
79
+ Go to `app/assets/config/manifest.js` and add the following lines:
80
+
81
+ ```js
82
+ //= link_directory ../native/android/javascripts .js
83
+ //= link_directory ../native/android/stylesheets .css
84
+ //= link_directory ../native/ios/javascripts .js
85
+ //= link_directory ../native/ios/stylesheets .css
86
+ //= link_directory ../native/uwp/javascripts .js
87
+ //= link_directory ../native/uwp/stylesheets .css
88
+ //= link_directory ../native/chrome/javascripts .js
89
+ //= link_directory ../native/chrome/stylesheets .css
90
+ //= link_directory ../native/osx/javascripts .js
91
+ //= link_directory ../native/osx/stylesheets .css
92
+ //= link_directory ../native/win32/javascripts .js
93
+ //= link_directory ../native/win32/stylesheets .css
94
+ //= link_directory ../native/win64/javascripts .js
95
+ //= link_directory ../native/win64/stylesheets .css
96
+ //= link_directory ../native/lin32/javascripts .js
97
+ //= link_directory ../native/lin32/stylesheets .css
98
+ //= link_directory ../native/lin64/javascripts .js
99
+ //= link_directory ../native/lin64/stylesheets .css
100
+ //= link_directory ../native/web/javascripts .js
101
+ //= link_directory ../native/web/stylesheets .css
102
+ ```
103
+
104
+ Let's move on to your devise class. For instance `User` located in `app/models/user.rb`. Associate belonging `App` objects:
105
+
106
+ ```ruby
107
+ has_many :apps
108
+ ```
109
+
110
+ Lastly, got to your routes file (`config/routes.rb`) and mount the `Native::Engine` class:
111
+
112
+ ```ruby
113
+ mount Native::Engine, at: '/native'
114
+ ```
115
+
116
+ ## Usage
117
+
118
+ ### NativeGap
119
+
120
+ While this gem assists you in creating a true cross-platform app, [NativeGap](https://nativegap.com) is still needed to create the actual native code. That's not too big of a deal though, NativeApp can be used entirely for free and it has an extensive [documentation](https://nativegap.com/guide).
121
+
122
+ Getting started with NativeGap:
123
+
124
+ 1. Create a new NativeGap app
125
+ 2. Wait until platforms processed
126
+ 3. For each platform you want to support: click `Update` and enter the start path. The start path consists of your `Native::Engine` mount path and the platform. It could look like this: `native/android`
127
+
128
+ That's it!
129
+
130
+ Native also supports the coexistence of multiple NativeGap apps with only one Rails app as a source.
131
+
132
+ ### Assets
133
+
134
+ With Native it is fairly simple to add platform specific stylesheets and scripts. In your assets directory you have a separate folder (in `app/assets/native`) for every platform which behaves similarly to the root assets folder. You are not only able to add custom assets for those platforms added by Native, but you can also add `web` specific assets.
135
+
136
+ You simple have to include ...
137
+
138
+ ```ruby
139
+ = native_assets
140
+ ```
141
+
142
+ ... in the `head` tag of your layout.
143
+
144
+ ### App methods
145
+
146
+ Native introduces an `App` activerecord model. Every object of your devise class can have multiple apps.
147
+
148
+ ```ruby
149
+ a = App.first
150
+
151
+ # Returns user (or other devise object) that this device belongs to. Can return `nil`.
152
+ a.user
153
+
154
+ # Returns lowercase string of platform.
155
+ d.platform
156
+
157
+ # Returns url of mounted `NativeGap::Engine` class. This can be used to differentiate between apps, if you have multiple NativeGap apps with one Rails app as source.
158
+ d.url
159
+
160
+ # Some timestamps
161
+ d.last_used
162
+ d.created_at
163
+ d.updated_at
164
+
165
+
166
+ # Returns activerecord array of apps from a specific platform
167
+ d.android
168
+ # ...
169
+ d.lin64
170
+
171
+ # Group apps by `platform`
172
+ d.platforms
173
+
174
+ # Group apps by `url`
175
+ d.apps
176
+ ```
177
+
178
+ ### View methods
179
+
180
+ **`current_app`** Returns `App` object related to current session. Returns `nil` when the Rails is being used normally.
181
+
182
+ **`current_platform`** Returns lowercase string of current platform. Returns `'web'` when the Rails is being used normally.
183
+
184
+ **`native_assets`** Returns platform specific `<link rel="stylesheet">` and `<script>` tags to include platform specific assets.
185
+
186
+ If you want to use them in your controllers, just add `include NativeHelper` at the top.
187
+
188
+ ### Notifications
189
+
190
+ You can enable native notifications on most platforms. To handle notifications Native integrates with thew [notifications-rails](https://github.com/jonhue/notifications-rails) gem.
191
+
192
+ ### Content scaling (Android)
193
+
194
+ NativeGap apps on Android often look scaled down. To fix this in your app add the following to `app/assets/native/android/javascripts/application.js`:
195
+
196
+ ```js
197
+ //= require nativeScale
198
+
199
+ document.addEventListener( 'turbolinks:load', function() {
200
+ nativeScale();
201
+ });
202
+ ```
203
+
204
+ This will adjust the `font-size` of `:root`. The pixel value can be [configured](#configuration).
205
+
206
+ ---
207
+
208
+ ## Configuration
209
+
210
+ You can configure Native by passing a block to `configure`:
211
+
212
+ ```ruby
213
+ Native.configure do |config|
214
+ config.devise_class = 'User'
215
+ end
216
+ ```
217
+
218
+ **`devise_class`** Specify your devise class. Takes a string. Defaults to `'User'`.
219
+
220
+ **`#{platform}`** Set to `false` to disable the platform. Takes a boolean. Defaults to `true`.
221
+
222
+ **`#{platform}_url`** Specify the start url of your app on a given platform by passing a stringified route helper. Takes a string. Defaults to `'root_url'`.
223
+
224
+ **`scale_size`** Defining `:root` `font-size` on Android apps, [learn more](#content-scaling-android). Takes a string. Defaults to `'18px'`.
225
+
226
+ ---
227
+
228
+ ## To Do
229
+
230
+ [Here](https://github.com/NativeGap/native-rails/projects/1) is the full list of current projects.
231
+
232
+ To propose your ideas, initiate the discussion by adding a [new issue](https://github.com/NativeGap/native-rails/issues/new).
233
+
234
+ ---
235
+
236
+ ## Contributing
237
+
238
+ We hope that you will consider contributing to Native. Please read this short overview for some information about how to get started:
239
+
240
+ [Learn more about contributing to this repository](https://github.com/NativeGap/native-rails/blob/master/CONTRIBUTING.md), [Code of Conduct](https://github.com/NativeGap/native-rails/blob/master/CODE_OF_CONDUCT.md)
241
+
242
+ ### Contributors
243
+
244
+ Give the people some :heart: who are working on this project. See them all at:
245
+
246
+ https://github.com/NativeGap/native-rails/graphs/contributors
247
+
248
+ ## License
249
+
250
+ MIT License
251
+
252
+ Copyright (c) 2017 Jonas Hübotter
253
+
254
+ Permission is hereby granted, free of charge, to any person obtaining a copy
255
+ of this software and associated documentation files (the "Software"), to deal
256
+ in the Software without restriction, including without limitation the rights
257
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
258
+ copies of the Software, and to permit persons to whom the Software is
259
+ furnished to do so, subject to the following conditions:
260
+
261
+ The above copyright notice and this permission notice shall be included in all
262
+ copies or substantial portions of the Software.
263
+
264
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
265
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
266
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
267
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
268
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
269
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
270
+ SOFTWARE.
data/Rakefile CHANGED
@@ -1,6 +1,2 @@
1
- require 'bundler/gem_tasks'
2
- require 'rspec/core/rake_task'
3
-
4
- RSpec::Core::RakeTask.new(:spec)
5
-
6
- task :default => :spec
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,2 @@
1
+ class Native::ApplicationController < ActionController::Base
2
+ end
@@ -0,0 +1,73 @@
1
+ require_dependency 'native/application_controller'
2
+
3
+ module Native
4
+ class PlatformsController < ApplicationController
5
+
6
+ def android
7
+ set_app 'android'
8
+ redirect_to send(Native.configuration.android_url)
9
+ end
10
+
11
+ def ios
12
+ set_app 'ios'
13
+ redirect_to send(Native.configuration.ios_url)
14
+ end
15
+
16
+ def uwp
17
+ set_app 'uwp'
18
+ redirect_to send(Native.configuration.uwp_url)
19
+ end
20
+
21
+ def chrome
22
+ set_app 'chrome'
23
+ redirect_to send(Native.configuration.chrome_url)
24
+ end
25
+
26
+ def osx
27
+ set_app 'osx'
28
+ redirect_to send(Native.configuration.osx_url)
29
+ end
30
+
31
+ def win32
32
+ set_app 'win32'
33
+ redirect_to send(Native.configuration.win32_url)
34
+ end
35
+
36
+ def win64
37
+ set_app 'win64'
38
+ redirect_to send(Native.configuration.win64_url)
39
+ end
40
+
41
+ def lin32
42
+ set_app 'lin32'
43
+ redirect_to send(Native.configuration.lin32_url)
44
+ end
45
+
46
+ def lin64
47
+ set_app 'lin64'
48
+ redirect_to send(Native.configuration.lin64_url)
49
+ end
50
+
51
+ private
52
+
53
+ def set_app platform
54
+ id = cookies[:nativeAppId]
55
+ url = request.original_url[0...-( platform.length + 1 )]
56
+ @app = Native::App.find_by(id: id, platform: platform, url: url) if id && Native::App.where(id: id, platform: platform, url: url).any?
57
+
58
+ if @app.nil?
59
+ @app = Native::App.new
60
+ @app.platform = platform
61
+ @app.url = url
62
+ end
63
+ @app.send( "#{Native.configuration.devise_class.downcase}=", send("current_#{Native.configuration.devise_class.downcase}") ) if send("current_#{Native.configuration.devise_class.downcase}")
64
+ @app.last_used = Time.now
65
+ @app.save!
66
+
67
+ cookies[:nativeAppId] = @app.id
68
+ cookies[:nativePlatform] = platform
69
+ cookies[:nativeApp] = url
70
+ end
71
+
72
+ end
73
+ end
@@ -0,0 +1,17 @@
1
+ module NativeHelper
2
+
3
+ def current_app
4
+ Native::App.find(cookies[:nativeAppId]) if cookies[:nativeAppId]
5
+ end
6
+
7
+ def current_platform
8
+ current_app&.platform || 'web'
9
+ end
10
+
11
+ def native_assets
12
+ stylesheet = stylesheet_link_tag "native/#{current_platform}/stylesheets/application", media: 'all', 'data-turbolinks-track': 'reload'
13
+ javascript = javascript_include_tag "native/#{current_platform}/javascripts/application", 'data-turbolinks-track': 'reload'
14
+ stylesheet.concat javascript
15
+ end
16
+
17
+ end
@@ -0,0 +1,21 @@
1
+ module Native
2
+ module AppLib
3
+
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ scope :android, -> { where(platform: 'android') }
8
+ scope :ios, -> { where(platform: 'ios') }
9
+ scope :uwp, -> { where(platform: 'uwp') }
10
+ scope :chrome, -> { where(platform: 'chrome') }
11
+ scope :osx, -> { where(platform: 'osx') }
12
+ scope :win32, -> { where(platform: 'win32') }
13
+ scope :win64, -> { where(platform: 'win64') }
14
+ scope :lin32, -> { where(platform: 'lin32') }
15
+ scope :lin64, -> { where(platform: 'lin64') }
16
+ scope :platforms, -> { group_by(&:platform) }
17
+ scope :apps, -> { group_by(&:url) }
18
+ end
19
+
20
+ end
21
+ end
data/config/routes.rb ADDED
@@ -0,0 +1,31 @@
1
+ Native::Engine.routes.draw do
2
+
3
+ if Native.configuration&.android
4
+ get 'android', to: 'native/platforms#android'
5
+ end
6
+ if Native.configuration&.ios
7
+ get 'ios', to: 'native/platforms#ios'
8
+ end
9
+ if Native.configuration&.uwp
10
+ get 'uwp', to: 'native/platforms#uwp'
11
+ end
12
+ if Native.configuration&.chrome
13
+ get 'chrome', to: 'native/platforms#chrome'
14
+ end
15
+ if Native.configuration&.osx
16
+ get 'osx', to: 'native/platforms#osx'
17
+ end
18
+ if Native.configuration&.win32
19
+ get 'win32', to: 'native/platforms#win32'
20
+ end
21
+ if Native.configuration&.win64
22
+ get 'win64', to: 'native/platforms#win64'
23
+ end
24
+ if Native.configuration&.lin32
25
+ get 'lin32', to: 'native/platforms#lin32'
26
+ end
27
+ if Native.configuration&.lin64
28
+ get 'lin64', to: 'native/platforms#lin64'
29
+ end
30
+
31
+ end
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'native'
@@ -0,0 +1,63 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/migration'
3
+
4
+ class NativeGenerator < Rails::Generators::Base
5
+
6
+ include Rails::Generators::Migration
7
+
8
+ source_root File.join File.dirname(__FILE__), 'templates'
9
+ desc 'Install Native'
10
+
11
+ def self.next_migration_number dirname
12
+ if ActiveRecord::Base.timestamped_migrations
13
+ Time.now.utc.strftime '%Y%m%d%H%M%S'
14
+ else
15
+ "%.3d" % ( current_migration_number(dirname) + 1 )
16
+ end
17
+ end
18
+
19
+ def create_initializer
20
+ template 'initializer.rb', 'config/initializers/native.rb'
21
+ end
22
+
23
+ def create_app_model
24
+ migration_template 'apps_migration.rb.erb', 'db/migrate/native_migration.rb', migration_version: migration_version
25
+ template 'app_model.rb', 'app/models/native/app.rb'
26
+ end
27
+
28
+ def create_assets
29
+ template 'application.css', 'app/assets/native/android/stylesheets/application.css'
30
+ template 'application.js', 'app/assets/native/android/javascripts/application.js'
31
+ template 'application.css', 'app/assets/native/ios/stylesheets/application.css'
32
+ template 'application.js', 'app/assets/native/ios/javascripts/application.js'
33
+ template 'application.css', 'app/assets/native/uwp/stylesheets/application.css'
34
+ template 'application.js', 'app/assets/native/uwp/javascripts/application.js'
35
+ template 'application.css', 'app/assets/native/chrome/stylesheets/application.css'
36
+ template 'application.js', 'app/assets/native/chrome/javascripts/application.js'
37
+ template 'application.css', 'app/assets/native/osx/stylesheets/application.css'
38
+ template 'application.js', 'app/assets/native/osx/javascripts/application.js'
39
+ template 'application.css', 'app/assets/native/win32/stylesheets/application.css'
40
+ template 'application.js', 'app/assets/native/win32/javascripts/application.js'
41
+ template 'application.css', 'app/assets/native/win64/stylesheets/application.css'
42
+ template 'application.js', 'app/assets/native/win64/javascripts/application.js'
43
+ template 'application.css', 'app/assets/native/lin32/stylesheets/application.css'
44
+ template 'application.js', 'app/assets/native/lin32/javascripts/application.js'
45
+ template 'application.css', 'app/assets/native/lin64/stylesheets/application.css'
46
+ template 'application.js', 'app/assets/native/lin64/javascripts/application.js'
47
+ template 'application.css', 'app/assets/native/web/stylesheets/application.css'
48
+ template 'application.js', 'app/assets/native/web/javascripts/application.js'
49
+ end
50
+
51
+ def show_readme
52
+ readme 'README.md'
53
+ end
54
+
55
+ private
56
+
57
+ def migration_version
58
+ if Rails.version >= '5.0.0'
59
+ "[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]"
60
+ end
61
+ end
62
+
63
+ end
@@ -0,0 +1 @@
1
+ Now run `rails db:migrate` to add Native to your database.
@@ -0,0 +1,9 @@
1
+ class Native::App < ActiveRecord::Base
2
+
3
+ self.table_name = 'native_apps'
4
+
5
+ include Native::AppLib
6
+
7
+ belongs_to Native.configuration.devise_class.downcase.to_sym, optional: true
8
+
9
+ end
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Use this file to import your platform specific stylesheets.
3
+ *
4
+ *= require_tree .
5
+ *= require_self
6
+ */
@@ -0,0 +1,3 @@
1
+ // Use this file to require your platform specific javascript.
2
+ //
3
+ //= require_tree .
@@ -0,0 +1,16 @@
1
+ class NativeMigration < ActiveRecord::Migration<%= migration_version %>
2
+ def change
3
+ create_table :native_apps do |t|
4
+
5
+ t.references Native.configuration.devise_class.downcase.to_sym, index: true
6
+
7
+ t.string :platform, index: true
8
+ t.string :url, index: true
9
+
10
+ t.datetime :last_used
11
+
12
+ t.timestamps
13
+
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,36 @@
1
+ Native.configure do |config|
2
+
3
+ ### DEVISE ###
4
+
5
+ # Specify your devise class. Defaults to `'User'`.
6
+ # config.devise_class = 'User'
7
+
8
+
9
+ ### CUSTOMIZATION ###
10
+
11
+ # Specify platforms your app supports.
12
+ # config.android = true
13
+ # config.ios = true
14
+ # config.uwp = true
15
+ # config.chrome = true
16
+ # config.osx = true
17
+ # config.win32 = true
18
+ # config.win64 = true
19
+ # config.lin32 = true
20
+ # config.lin64 = true
21
+
22
+ # Specify a stringified url helper to set a start url for each platform.
23
+ # config.android_url = 'root_url'
24
+ # config.ios_url = 'root_url'
25
+ # config.uwp_url = 'root_url'
26
+ # config.chrome_url = 'root_url'
27
+ # config.osx_url = 'root_url'
28
+ # config.win32_url = 'root_url'
29
+ # config.win64_url = 'root_url'
30
+ # config.lin32_url = 'root_url'
31
+ # config.lin64_url = 'root_url'
32
+
33
+ # The Android platform does not scale the content correctly. Set your `font-size` of `:root` on Android
34
+ # config.scale_size = '18px'
35
+
36
+ end
@@ -0,0 +1,49 @@
1
+ module Native
2
+ class Configuration
3
+
4
+ attr_accessor :devise_class
5
+ attr_accessor :android
6
+ attr_accessor :ios
7
+ attr_accessor :uwp
8
+ attr_accessor :chrome
9
+ attr_accessor :osx
10
+ attr_accessor :win32
11
+ attr_accessor :win64
12
+ attr_accessor :lin32
13
+ attr_accessor :lin64
14
+ attr_accessor :android_url
15
+ attr_accessor :ios_url
16
+ attr_accessor :uwp_url
17
+ attr_accessor :chrome_url
18
+ attr_accessor :osx_url
19
+ attr_accessor :win32_url
20
+ attr_accessor :win64_url
21
+ attr_accessor :lin32_url
22
+ attr_accessor :lin64_url
23
+ attr_accessor :scale_size
24
+
25
+ def initialize
26
+ @devise_class = 'User'
27
+ @android = true
28
+ @ios = true
29
+ @uwp = true
30
+ @chrome = true
31
+ @osx = true
32
+ @win32 = true
33
+ @win64 = true
34
+ @lin32 = true
35
+ @lin64 = true
36
+ @android_url = 'root_url'
37
+ @ios_url = 'root_url'
38
+ @uwp_url = 'root_url'
39
+ @chrome_url = 'root_url'
40
+ @osx_url = 'root_url'
41
+ @win32_url = 'root_url'
42
+ @win64_url = 'root_url'
43
+ @lin32_url = 'root_url'
44
+ @lin64_url = 'root_url'
45
+ @scale_size = '18px'
46
+ end
47
+
48
+ end
49
+ end
@@ -1,13 +1,5 @@
1
- module Native
2
-
3
- VERSION = "0.0.1"
4
-
5
- class Version
6
-
7
- def self.current
8
- return "native " + VERSION
9
- end
10
-
11
- end
12
-
13
- end
1
+ module Native
2
+
3
+ VERSION = '1.0.0'
4
+
5
+ end
data/lib/native.rb CHANGED
@@ -1,11 +1,20 @@
1
- begin
2
- require 'rails'
3
- rescue Exception => e
4
- warn "Ensure you are in a Ruby on Rails environment"
5
- end
6
-
7
- module Native
8
-
9
- require 'native/version'
10
-
11
- end
1
+ require 'native/version'
2
+
3
+ module Native
4
+
5
+ autoload :Configuration, 'native/configuration'
6
+
7
+ class << self
8
+ attr_accessor :configuration
9
+ end
10
+
11
+ def self.configure
12
+ self.configuration ||= Configuration.new
13
+ yield configuration
14
+ end
15
+
16
+ class Engine < ::Rails::Engine
17
+ # isolate_namespace Native
18
+ end
19
+
20
+ end
data/native.gemspec CHANGED
@@ -2,25 +2,25 @@
2
2
  require File.expand_path(File.join('..', 'lib', 'native', 'version'), __FILE__)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
- gem.name = "native"
5
+ gem.name = 'native'
6
6
  gem.version = Native::VERSION
7
7
  gem.platform = Gem::Platform::RUBY
8
- gem.summary = "Building cross-platform apps with Rails"
9
- gem.description = "[BETA] Build native apps for all major platforms from your Rails app with ease."
10
- gem.authors = ["Jonas Hübotter"]
11
- gem.email = "jonas@slooob.com"
12
- gem.homepage = "https://github.com/jonhue/native"
13
- gem.license = "MIT"
8
+ gem.summary = 'Build native apps for all major platforms from your Rails applications'
9
+ gem.description = 'Build native apps for all major platforms from your Rails applications.'
10
+ gem.authors = 'Jonas Hübotter'
11
+ gem.email = 'jonas.huebotter@gmail.com'
12
+ gem.homepage = 'https://github.com/NativeGap/native-rails'
13
+ gem.license = 'MIT'
14
14
 
15
15
  gem.files = `git ls-files`.split("\n")
16
- gem.require_paths = ["lib"]
17
- # gem.bindir = "bin"
18
- # gem.executables = ["native"]
16
+ gem.require_paths = ['lib']
19
17
 
20
18
  gem.post_install_message = IO.read('INSTALL.md')
21
19
 
22
- gem.required_ruby_version = '>= 2.0'
20
+ gem.required_ruby_version = '>= 2.3'
23
21
 
24
-
25
- gem.add_dependency 'rails', '>= 4.1.0'
22
+ gem.add_development_dependency 'bundler', '~> 1.16'
23
+ gem.add_development_dependency 'rake', '~> 10.0'
24
+ gem.add_dependency 'rails', '>= 5.0'
25
+ gem.add_dependency 'devise', '~> 4.3'
26
26
  end
@@ -0,0 +1,9 @@
1
+ function nativeScale() {
2
+ if ( $(':root').css('font-size') == '<%= Native.configuration.scale_size %>' ) {
3
+ $(':root').css({ 'font-size': '<%= Native.configuration.scale_size %>' });
4
+ } else {
5
+ $('body *').css({ 'transition': 'none' });
6
+ $(':root').css({ 'font-size': '<%= Native.configuration.scale_size %>' });
7
+ $('body *').css({ 'transition': 'inherit' });
8
+ };
9
+ };
metadata CHANGED
@@ -1,32 +1,73 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: native
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonas Hübotter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-01 00:00:00.000000000 Z
11
+ date: 2017-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: rails
15
43
  requirement: !ruby/object:Gem::Requirement
16
44
  requirements:
17
45
  - - ">="
18
46
  - !ruby/object:Gem::Version
19
- version: 4.1.0
47
+ version: '5.0'
20
48
  type: :runtime
21
49
  prerelease: false
22
50
  version_requirements: !ruby/object:Gem::Requirement
23
51
  requirements:
24
52
  - - ">="
25
53
  - !ruby/object:Gem::Version
26
- version: 4.1.0
27
- description: "[BETA] Build native apps for all major platforms from your Rails app
28
- with ease."
29
- email: jonas@slooob.com
54
+ version: '5.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: devise
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '4.3'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '4.3'
69
+ description: Build native apps for all major platforms from your Rails applications.
70
+ email: jonas.huebotter@gmail.com
30
71
  executables: []
31
72
  extensions: []
32
73
  extra_rdoc_files: []
@@ -34,22 +75,74 @@ files:
34
75
  - ".github/issue_template.md"
35
76
  - ".github/pull_request_template.md"
36
77
  - ".gitignore"
78
+ - ".travis.yml"
37
79
  - CHANGELOG.md
80
+ - CODE_OF_CONDUCT.md
38
81
  - CONTRIBUTING.md
82
+ - DEPRECATIONS.md
39
83
  - Gemfile
40
- - Gemfile.lock
41
84
  - INSTALL.md
42
85
  - LICENSE
43
86
  - README.md
44
87
  - Rakefile
88
+ - app/controllers/native/application_controller.rb
89
+ - app/controllers/native/platforms_controller.rb
90
+ - app/helpers/native_helper.rb
91
+ - app/models/concerns/native/app_lib.rb
92
+ - config/routes.rb
93
+ - init.rb
94
+ - lib/generators/native_generator.rb
95
+ - lib/generators/templates/README.md
96
+ - lib/generators/templates/app_model.rb
97
+ - lib/generators/templates/application.css
98
+ - lib/generators/templates/application.js
99
+ - lib/generators/templates/apps_migration.rb.erb
100
+ - lib/generators/templates/initializer.rb
45
101
  - lib/native.rb
102
+ - lib/native/configuration.rb
46
103
  - lib/native/version.rb
47
104
  - native.gemspec
48
- homepage: https://github.com/jonhue/native
105
+ - vendor/assets/javascripts/nativeScale.js.erb
106
+ homepage: https://github.com/NativeGap/native-rails
49
107
  licenses:
50
108
  - MIT
51
109
  metadata: {}
52
- post_install_message: "**Thank you for installing Native!**\n"
110
+ post_install_message: |
111
+ **Thank you for installing Native!**
112
+
113
+
114
+ There are three more steps to take:
115
+
116
+ 1) Run `rails g native` and `rails db:migrate`
117
+ 2) Add to `assets/manifest.js`:
118
+
119
+ //= link_directory ../native/android/javascripts .js
120
+ //= link_directory ../native/android/stylesheets .css
121
+ //= link_directory ../native/ios/javascripts .js
122
+ //= link_directory ../native/ios/stylesheets .css
123
+ //= link_directory ../native/uwp/javascripts .js
124
+ //= link_directory ../native/uwp/stylesheets .css
125
+ //= link_directory ../native/chrome/javascripts .js
126
+ //= link_directory ../native/chrome/stylesheets .css
127
+ //= link_directory ../native/osx/javascripts .js
128
+ //= link_directory ../native/osx/stylesheets .css
129
+ //= link_directory ../native/win32/javascripts .js
130
+ //= link_directory ../native/win32/stylesheets .css
131
+ //= link_directory ../native/win64/javascripts .js
132
+ //= link_directory ../native/win64/stylesheets .css
133
+ //= link_directory ../native/lin32/javascripts .js
134
+ //= link_directory ../native/lin32/stylesheets .css
135
+ //= link_directory ../native/lin64/javascripts .js
136
+ //= link_directory ../native/lin64/stylesheets .css
137
+ //= link_directory ../native/web/javascripts .js
138
+ //= link_directory ../native/web/stylesheets .css
139
+
140
+ 3) Mount engine in `config/routes.rb`:
141
+
142
+ mount Native::Engine, at: '/native'
143
+
144
+
145
+ Learn more at https://github.com/NativeGap/native-rails
53
146
  rdoc_options: []
54
147
  require_paths:
55
148
  - lib
@@ -57,7 +150,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
57
150
  requirements:
58
151
  - - ">="
59
152
  - !ruby/object:Gem::Version
60
- version: '2.0'
153
+ version: '2.3'
61
154
  required_rubygems_version: !ruby/object:Gem::Requirement
62
155
  requirements:
63
156
  - - ">="
@@ -65,8 +158,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
65
158
  version: '0'
66
159
  requirements: []
67
160
  rubyforge_project:
68
- rubygems_version: 2.5.2
161
+ rubygems_version: 2.7.3
69
162
  signing_key:
70
163
  specification_version: 4
71
- summary: Building cross-platform apps with Rails
164
+ summary: Build native apps for all major platforms from your Rails applications
72
165
  test_files: []
data/Gemfile.lock DELETED
@@ -1,152 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- native (0.0.1)
5
- rails (>= 4.1.0)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- actioncable (5.0.2)
11
- actionpack (= 5.0.2)
12
- nio4r (>= 1.2, < 3.0)
13
- websocket-driver (~> 0.6.1)
14
- actionmailer (5.0.2)
15
- actionpack (= 5.0.2)
16
- actionview (= 5.0.2)
17
- activejob (= 5.0.2)
18
- mail (~> 2.5, >= 2.5.4)
19
- rails-dom-testing (~> 2.0)
20
- actionpack (5.0.2)
21
- actionview (= 5.0.2)
22
- activesupport (= 5.0.2)
23
- rack (~> 2.0)
24
- rack-test (~> 0.6.3)
25
- rails-dom-testing (~> 2.0)
26
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
27
- actionview (5.0.2)
28
- activesupport (= 5.0.2)
29
- builder (~> 3.1)
30
- erubis (~> 2.7.0)
31
- rails-dom-testing (~> 2.0)
32
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
33
- activejob (5.0.2)
34
- activesupport (= 5.0.2)
35
- globalid (>= 0.3.6)
36
- activemodel (5.0.2)
37
- activesupport (= 5.0.2)
38
- activerecord (5.0.2)
39
- activemodel (= 5.0.2)
40
- activesupport (= 5.0.2)
41
- arel (~> 7.0)
42
- activesupport (5.0.2)
43
- concurrent-ruby (~> 1.0, >= 1.0.2)
44
- i18n (~> 0.7)
45
- minitest (~> 5.1)
46
- tzinfo (~> 1.1)
47
- arel (7.1.4)
48
- ast (2.3.0)
49
- builder (3.2.3)
50
- concurrent-ruby (1.0.5)
51
- diff-lcs (1.3)
52
- erubis (2.7.0)
53
- globalid (0.3.7)
54
- activesupport (>= 4.1.0)
55
- i18n (0.8.1)
56
- loofah (2.0.3)
57
- nokogiri (>= 1.5.9)
58
- mail (2.6.4)
59
- mime-types (>= 1.16, < 4)
60
- method_source (0.8.2)
61
- mime-types (3.1)
62
- mime-types-data (~> 3.2015)
63
- mime-types-data (3.2016.0521)
64
- mini_portile2 (2.1.0)
65
- minitest (5.10.1)
66
- nio4r (2.0.0)
67
- nokogiri (1.7.0.1)
68
- mini_portile2 (~> 2.1.0)
69
- nokogiri (1.7.0.1-x86-mingw32)
70
- mini_portile2 (~> 2.1.0)
71
- parser (2.4.0.0)
72
- ast (~> 2.2)
73
- powerpack (0.1.1)
74
- rack (2.0.1)
75
- rack-test (0.6.3)
76
- rack (>= 1.0)
77
- rails (5.0.2)
78
- actioncable (= 5.0.2)
79
- actionmailer (= 5.0.2)
80
- actionpack (= 5.0.2)
81
- actionview (= 5.0.2)
82
- activejob (= 5.0.2)
83
- activemodel (= 5.0.2)
84
- activerecord (= 5.0.2)
85
- activesupport (= 5.0.2)
86
- bundler (>= 1.3.0, < 2.0)
87
- railties (= 5.0.2)
88
- sprockets-rails (>= 2.0.0)
89
- rails-dom-testing (2.0.2)
90
- activesupport (>= 4.2.0, < 6.0)
91
- nokogiri (~> 1.6)
92
- rails-html-sanitizer (1.0.3)
93
- loofah (~> 2.0)
94
- railties (5.0.2)
95
- actionpack (= 5.0.2)
96
- activesupport (= 5.0.2)
97
- method_source
98
- rake (>= 0.8.7)
99
- thor (>= 0.18.1, < 2.0)
100
- rainbow (2.2.1)
101
- rake (12.0.0)
102
- rspec-core (3.5.4)
103
- rspec-support (~> 3.5.0)
104
- rspec-expectations (3.5.0)
105
- diff-lcs (>= 1.2.0, < 2.0)
106
- rspec-support (~> 3.5.0)
107
- rspec-mocks (3.5.0)
108
- diff-lcs (>= 1.2.0, < 2.0)
109
- rspec-support (~> 3.5.0)
110
- rspec-rails (3.5.2)
111
- actionpack (>= 3.0)
112
- activesupport (>= 3.0)
113
- railties (>= 3.0)
114
- rspec-core (~> 3.5.0)
115
- rspec-expectations (~> 3.5.0)
116
- rspec-mocks (~> 3.5.0)
117
- rspec-support (~> 3.5.0)
118
- rspec-support (3.5.0)
119
- rubocop (0.47.1)
120
- parser (>= 2.3.3.1, < 3.0)
121
- powerpack (~> 0.1)
122
- rainbow (>= 1.99.1, < 3.0)
123
- ruby-progressbar (~> 1.7)
124
- unicode-display_width (~> 1.0, >= 1.0.1)
125
- ruby-progressbar (1.8.1)
126
- sprockets (3.7.1)
127
- concurrent-ruby (~> 1.0)
128
- rack (> 1, < 3)
129
- sprockets-rails (3.2.0)
130
- actionpack (>= 4.0)
131
- activesupport (>= 4.0)
132
- sprockets (>= 3.0.0)
133
- thor (0.19.4)
134
- thread_safe (0.3.6)
135
- tzinfo (1.2.2)
136
- thread_safe (~> 0.1)
137
- unicode-display_width (1.1.3)
138
- websocket-driver (0.6.5)
139
- websocket-extensions (>= 0.1.0)
140
- websocket-extensions (0.1.2)
141
-
142
- PLATFORMS
143
- ruby
144
- x86-mingw32
145
-
146
- DEPENDENCIES
147
- native!
148
- rspec-rails (~> 3.5, >= 3.5.2)
149
- rubocop (~> 0.47.1)
150
-
151
- BUNDLED WITH
152
- 1.13.7