rails_stuff 0.2.0 → 0.3.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
2
  SHA1:
3
- metadata.gz: c06d5c2ac89db00eb5633892fdf69367b9e9ced5
4
- data.tar.gz: f0ba6b7bf860d9bb0931f9b8cb547df9f016ba7b
3
+ metadata.gz: 65e05ba6c678beac4cb3ffe9b343451f18e04b0f
4
+ data.tar.gz: 15bcb1d1b7512b366a33ba672c0b79ab9cc3161a
5
5
  SHA512:
6
- metadata.gz: b51f09107487046881c04e942df7bb649471944cc50b99cba5d33209b1689957310671393034e74ca5d210252152bcf2992204eb0a8cdcf68200616211ba2f18
7
- data.tar.gz: 0eb990db1e6304d7126c92bd8e6a8759fad4d4eb798a19c53ae75219fa58c0294dc1e60a086dc5f77d6cdde6894fb1e05be563da19d898735815e09d24ff8d71
6
+ metadata.gz: 5a7094c08403ab00894951527b8652d66d9ac841e95834daab95d1e9ec4fe131aab178b52aa91c8d363789cba98a9c922a88da9108dcf37d55ff8efc4f3b785c
7
+ data.tar.gz: fc876d2f0ae219d76109e91450e93cef8474ea22ab40f4eeea0a65da1732c86d21f8047e1b718d1c6baf92b089e811b7352250cbc4c838af45b1cc27821865e4
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.3.0
2
+
3
+ - PluginManager & media queries.
4
+
1
5
  ## 0.2.0
2
6
 
3
7
  - Bypass block to `respond_with`.
data/Gemfile CHANGED
@@ -18,4 +18,6 @@ group :development do
18
18
  gem 'rspec-rails', '~> 3.3.3'
19
19
 
20
20
  gem 'rubocop', '~> 0.33.0'
21
+
22
+ gem 'coveralls', '~> 0.8.2', require: false
21
23
  end
data/README.md CHANGED
@@ -47,7 +47,21 @@ Collection of useful modules for Rails.
47
47
  - __Forms__
48
48
  `hidden_params_fields` to bypass query params in GET-forms.
49
49
 
50
- __[Helpers usage](#helpers)__
50
+ __[Helpers usage](#helpers-usage)__
51
+
52
+ #### Test helpers:
53
+
54
+ - __Response__
55
+ `#json_body` to test json responses.
56
+
57
+ __[Test helpers usage](#test-helpers-usage)__
58
+
59
+ #### Assets:
60
+
61
+ - __MediaQueries__
62
+ `@media #{$sm-up} and #{$portrait} { ... }` queries for SASS.
63
+ - __[PluginManager](#pluginmanager)__
64
+ Simple way to create jQuery plugins using classes.
51
65
 
52
66
  ## Installation
53
67
 
@@ -307,7 +321,7 @@ params.require_permitted(:access_token, :refresh_token)
307
321
  params.permit(:access_token, :refresh_token).require(:access_token, :refresh_token)
308
322
  ```
309
323
 
310
- ### Helpers
324
+ ### Helpers usage
311
325
 
312
326
  Include helper module into `ApplicationHelper`.
313
327
  Or use `RailsStuff::Helpers::All` to include all helpers together.
@@ -342,6 +356,51 @@ Translation helpers are cached, so there is no need to cache it by yourself in
342
356
  template if you want to decrease computations. And be aware of it if you
343
357
  switch locales while rendering single view.
344
358
 
359
+ ### Test helpers usage
360
+
361
+ Add `require 'rails_stuff/test_helpers/rails'` to `test_helper.rb`.
362
+
363
+ ```ruby
364
+ assert_equal({'id' => 1, 'name' => 'John'}, response.json_body)
365
+ assert_equal('John', response.json_body['name'])
366
+ assert_equal('John', response.json_body.name)
367
+
368
+ # with rspec-its
369
+ subject { get :show, id: resource.id }
370
+ its(:json_body) { should include 'id' => 1 }
371
+ its('json_body.name') { should eq 'John' }
372
+ ```
373
+
374
+ `.json_body` helper requires `gem 'hashie'`.
375
+
376
+ Note that `hashie` conflicts with `Hash` methods, so `.json_body.key` or
377
+ `.json_body.hash` will not work as expected (or at all).
378
+ Use `json_body['key']` instead.
379
+
380
+ ### PluginManager
381
+
382
+ Provides simple way to create jQuery plugins. Create class and PluginManager
383
+ will create jQuery function for it. It'll create instance of class for each
384
+ jQuery element and prevent calling constructor twice.
385
+
386
+ ```coffee
387
+ PluginManager.add 'myPlugin', class
388
+ constructor: (@$element, @options) ->
389
+ # ...
390
+
391
+ customAction: (options)->
392
+ # ...
393
+
394
+ # Add initializers
395
+ $ -> $('[data-my-plugin]').myPlugin()
396
+ # or
397
+ $(document).on 'click', '[data-my-plugin]', (e) ->
398
+ $(@).myPlugin('customAction', event: e)
399
+
400
+ # Or use it manually
401
+ $('.selector').myPlugin().myPlugin('customAction')
402
+ ```
403
+
345
404
  ## Development
346
405
 
347
406
  After checking out the repo, run `bin/setup` to install dependencies.
@@ -0,0 +1,40 @@
1
+ # Provides simple way to create jQuery plugins. Create class and PluginManager
2
+ # will create jQuery function for it. It'll create instance of class for each
3
+ # jQuery element and prevent calling constructor twice.
4
+ #
5
+ # PluginManager.add 'myPlugin', class
6
+ # constructor: (@$element, @options) ->
7
+ # # ...
8
+ #
9
+ # customAction: (options)->
10
+ # # ...
11
+ #
12
+ # # Add initializers
13
+ # $ -> $('[data-my-plugin]').myPlugin()
14
+ # # or
15
+ # $(document).on 'click', '[data-my-plugin]', (e) ->
16
+ # $(@).myPlugin('customAction', event: e)
17
+ #
18
+ # # Or use it manually
19
+ # $('.selector').myPlugin().myPlugin('customAction')
20
+ class window.PluginManager
21
+ @plugins = {}
22
+
23
+ # Takes class and creates jQuery's plugin function for it.
24
+ # This function simply creates class instance for each element
25
+ # and prevents creating multiple instances on single element.
26
+ #
27
+ # Name is set explicitly to avoid errors when using uglifier.
28
+ @add: (pluginName, klass) ->
29
+ data_index = "#{pluginName}.instance"
30
+ @plugins[pluginName] = klass
31
+ jQuery.fn[pluginName] = (action, options) ->
32
+ if typeof action is 'object'
33
+ options = action
34
+ action = null
35
+ @each ->
36
+ $this = jQuery @
37
+ unless instance = $this.data data_index
38
+ instance = new klass $this, options
39
+ $this.data data_index, instance
40
+ instance[action](options) if action
@@ -0,0 +1,25 @@
1
+ // Foundation-style media queries.
2
+ // Works with Bootstrap3 out of the box.
3
+ // Without bootstrap just define variables:
4
+ // screen-xs-max, screen-{sm,md}-{min,max}, screen-lg-min
5
+ //
6
+ // Usage:
7
+ //
8
+ // @media #{$sm-up} { ... }
9
+ // @media #{$sm-only} and #{$landscape} { ... }
10
+ $screen: "only screen" !default;
11
+
12
+ $landscape: "(orientation: landscape)" !default;
13
+ $portrait: "(orientation: portrait)" !default;
14
+
15
+ $xs-up: $screen !default;
16
+ $xs-only: "(max-width: #{$screen-xs-max})" !default;
17
+
18
+ $sm-up: "(min-width:#{$screen-sm-min})" !default;
19
+ $sm-only: "(min-width:#{$screen-sm-min}) and (max-width:#{$screen-sm-max})" !default;
20
+
21
+ $md-up: "(min-width:#{$screen-md-min})" !default;
22
+ $md-only: "(min-width:#{$screen-md-min}) and (max-width:#{$screen-md-max})" !default;
23
+
24
+ $lg-up: "(min-width:#{$screen-lg-min})" !default;
25
+ $lg-only: "(min-width:#{$screen-lg-min})" !default;
@@ -49,7 +49,7 @@ module RailsStuff
49
49
  end
50
50
  end
51
51
 
52
- class Railtie < Rails::Railtie
52
+ class Engine < Rails::Engine
53
53
  initializer :rails_stuff_setup_modules, after: :load_config_initializers do
54
54
  RailsStuff.setup_modules!
55
55
  end
@@ -5,7 +5,7 @@ module RailsStuff
5
5
 
6
6
  module VERSION #:nodoc:
7
7
  MAJOR = 0
8
- MINOR = 2
8
+ MINOR = 3
9
9
  TINY = 0
10
10
  PRE = nil
11
11
 
data/lib/rails_stuff.rb CHANGED
@@ -16,4 +16,4 @@ module RailsStuff
16
16
  autoload :TypesTracker
17
17
  end
18
18
 
19
- require 'rails_stuff/railtie' if defined?(Rails::Railtie)
19
+ require 'rails_stuff/engine' if defined?(Rails::Engine)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_stuff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max Melentiev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-09-15 00:00:00.000000000 Z
11
+ date: 2015-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -72,8 +72,11 @@ files:
72
72
  - bin/git-hooks/pre-commit
73
73
  - bin/install_git_hooks
74
74
  - bin/setup
75
+ - lib/assets/javascripts/rails_stuff/plugin_manager.coffee
76
+ - lib/assets/stylesheets/rails_stuff/_media_queries.scss
75
77
  - lib/net/http/debug.rb
76
78
  - lib/rails_stuff.rb
79
+ - lib/rails_stuff/engine.rb
77
80
  - lib/rails_stuff/helpers.rb
78
81
  - lib/rails_stuff/helpers/all.rb
79
82
  - lib/rails_stuff/helpers/bootstrap.rb
@@ -84,7 +87,6 @@ files:
84
87
  - lib/rails_stuff/helpers/translation.rb
85
88
  - lib/rails_stuff/nullify_blank_attrs.rb
86
89
  - lib/rails_stuff/params_parser.rb
87
- - lib/rails_stuff/railtie.rb
88
90
  - lib/rails_stuff/random_uniq_attr.rb
89
91
  - lib/rails_stuff/redis_storage.rb
90
92
  - lib/rails_stuff/resources_controller.rb