bootstrap-honoka-rails 4.0.0.2 → 4.0.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a8e2c6460727e34ed97a890a5e5f4764f188a73d749c5016a8a3e8ce8543995d
4
- data.tar.gz: 96501d76aee0d0376160aa5a0e70517cffb01ef852489e5f52cd776e545490ff
3
+ metadata.gz: 5bf84731b53acb5258623aa79851862bf7598ec3053bfb66d791d47697ff31ba
4
+ data.tar.gz: 3be633c0a43c8bf26bca2ce81de22e7cecd1c4ec26211ea0c8004cdcef310815
5
5
  SHA512:
6
- metadata.gz: 9c9c571cb44736a421eab9be937f1cf9f39a1029e917f154321474f57659e80a82ef2516424e02397298e16bfd0527a6c52210f92ddbf9c3d566948ad5fdb3f5
7
- data.tar.gz: 82eac787c50247a9622c5dea6ba86fe1d81832ef09b0e25f4bd8f85ffb83e33d47324a7d67748dbd386e09ba6ee2a87bc388004c99466e6bcf074c151a85a28a
6
+ metadata.gz: 8ab8cd1e8afc82f00ebe27aedfe415c2f354c954b70aff1dbc3e59003e49124a91ad4db87b3553d75008def5e4c8e769b165b0040ebe5b6fe94c6df5d3023ee3
7
+ data.tar.gz: 5aea46b728ea79075695bff5aabe38f758cad3e45bb624bd2c7419f64fa8767ec1e789871706f9f1fef4588caf2fc82b4e896c93597860164a020a7d9a590d92
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Bootstrap-Honoka-Rails
2
2
 
3
3
  [Honoka](https://github.com/windyakin/Honoka) is a Bootstrap theme that can display Japanese beautifully.
4
- bootstrap-honoka-rails can easily install [Honoka](https://github.com/windyakin/Honoka),[Umi](https://ysakasin.github.io/Umi/) , [Nico](https://nico.kubosho.com/) and [Rin](https://rinhoshizo.la/) on Rails.
4
+ bootstrap-honoka-rails can easily install [Honoka](https://github.com/windyakin/Honoka), [Umi](https://ysakasin.github.io/Umi/) , [Nico](https://nico.kubosho.com/) and [Rin](https://rinhoshizo.la/) on Rails.
5
5
 
6
6
  [Honoka](https://github.com/windyakin/Honoka) は日本語も美しく表示できる Bootstrap テーマです。
7
7
  bootstrap-honoka-rails は [Honoka](https://github.com/windyakin/Honoka) や [Umi](https://ysakasin.github.io/Umi/) や [Nico](https://nico.kubosho.com/) や [Rin](https://rinhoshizo.la/) を Rails 上に簡単にインストールできます。
@@ -34,7 +34,9 @@ gem 'bootstrap-honoka-rails' , '~>4.3.1' # or '~> 3.3.7'
34
34
  Add to application.css `*= require _honoka` <br>
35
35
  For bootstrap ver3 you need `*= _bootstrap-sprockets`.
36
36
 
37
- ```css app/assets/stylesheets/application.css
37
+ app/assets/stylesheets/application.css
38
+
39
+ ```css
38
40
  /*
39
41
  *= require _bootstrap-sprockets # Add line ※ v3 only
40
42
  *= require _honoka # Add line
@@ -44,10 +46,11 @@ For bootstrap ver3 you need `*= _bootstrap-sprockets`.
44
46
 
45
47
  and add to application.js <br>
46
48
  `//= require popper` (bootstrap ver4 later), <br>
47
- `//= require bootstrap-sprockets` , <br>
48
- `//= require bootstrap.min`
49
+ `//= require bootstrap-sprockets`
50
+
51
+ app/assets/javascripts/application.js
49
52
 
50
- ```js app/assets/javascripts/application.js
53
+ ```js
51
54
  //= require jquery2
52
55
  //= require rails-ujs
53
56
  //= require activestorage
@@ -66,28 +69,30 @@ Please check [here](https://github.com/twbs/bootstrap-sass/issues/714) for more
66
69
  とりあえずインストール後、上記を application.css と application.js に追加すれば OK です。<br>
67
70
  注意点として `bootstrap-sprockets` を読み込むと思いますが、その場合 `bootstrap.min` は読み込む必要がありません。<br>
68
71
  何故なら Dropdown が正しく動作しない可能性があります。 <br>
69
- 詳細は[こちら](https://github.com/twbs/bootstrap-sass/issues/714)をご確認ください。
72
+ 詳細は[こちら](https://github.com/twbs/bootstrap-sass/issues/714)をご確認ください。<br>
70
73
  ※production 環境で動作することを確認済み。 サンプルアプリは 'test/dummy' ディレクトリ内 にあります。
71
74
 
72
75
  ---
73
76
 
74
77
  Certain [versions](VERSIONS.md) also support Nico , Umi and Rin.
75
78
 
76
- ```css app/assets/stylesheets/application.css
79
+ app/assets/stylesheets/application.css
80
+
81
+ ```css
77
82
  *= require _umi # Add line
78
83
  *= require_self
79
84
  ```
80
85
 
81
86
  or
82
87
 
83
- ```css app/assets/stylesheets/application.css
88
+ ```css
84
89
  *= require _nico # Add line
85
90
  *= require_self
86
91
  ```
87
92
 
88
93
  or
89
94
 
90
- ```css app/assets/stylesheets/application.css
95
+ ```css
91
96
  *= require _rin # Add line
92
97
  *= require_self
93
98
  ```
@@ -95,7 +100,7 @@ or
95
100
  Please check [VERSIONS.md](VERSIONS.md) for Honoka Nico Umi Rin compatible Ver.
96
101
 
97
102
  [日本語訳][特定のバージョン](VERSIONS.md)では "Nico"と "Umi" と "Rin" も対応しています。
98
- `_honoka` の代わりに `*= require _nico` と書けば Nico になりますし、 `_umi` と書けば Umi デザインになります。
103
+ `_honoka` の代わりに `*= require _nico` と書けば Nico になりますし、 `_umi` と書けば Umi デザインになります。 <br>
99
104
  Rin も Ver によっては `_rin` と書けば対応出来ます。<br>
100
105
  Honoka Nico Umi Rin の対応 Ver は[VERSIONS.md](VERSIONS.md)をご確認ください。
101
106
 
@@ -110,11 +115,11 @@ bootstrap-honoka-rails は bootstrap 又は bootstrap-sass を内部的に使っ
110
115
 
111
116
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
112
117
 
113
- ## Use Bootstrap Theme
118
+ ## Supported bootstrap themes
114
119
 
115
- #### [Honoka](https://github.com/windyakin/Honoka)
120
+ #### [Honoka](http://honokak.osaka/)
116
121
 
117
- Source Url ... [https://github.com/windyakin/Honoka](https://github.com/windyakin/Honoka)
122
+ Source URL ... [https://github.com/windyakin/Honoka](https://github.com/windyakin/Honoka)
118
123
 
119
124
  > The MIT License (MIT)
120
125
  >
@@ -124,7 +129,7 @@ Source Url ... [https://github.com/windyakin/Honoka](https://github.com/windyaki
124
129
 
125
130
  #### [Umi](https://ysakasin.github.io/Umi/)
126
131
 
127
- Source Url ... [https://github.com/ysakasin/Umi](https://github.com/ysakasin/Umi)
132
+ Source URL ... [https://github.com/ysakasin/Umi](https://github.com/ysakasin/Umi)
128
133
 
129
134
  > The MIT License (MIT)
130
135
  >
@@ -134,7 +139,7 @@ Source Url ... [https://github.com/ysakasin/Umi](https://github.com/ysakasin/Umi
134
139
 
135
140
  #### [Nico](https://nico.kubosho.com/)
136
141
 
137
- Source Url ... [https://github.com/kubosho/Nico](https://github.com/kubosho/Nico)
142
+ Source URL ... [https://github.com/kubosho/Nico](https://github.com/kubosho/Nico)
138
143
 
139
144
  > The MIT License (MIT)
140
145
  >
@@ -144,7 +149,7 @@ Source Url ... [https://github.com/kubosho/Nico](https://github.com/kubosho/Nico
144
149
 
145
150
  #### [Rin](https://rinhoshizo.la/)
146
151
 
147
- Source Url ... [https://github.com/raryosu/Rin](https://github.com/raryosu/Rin)
152
+ Source URL ... [https://github.com/raryosu/Rin](https://github.com/raryosu/Rin)
148
153
 
149
154
  > The MIT License (MIT)
150
155
  >
data/Rakefile CHANGED
@@ -1,33 +1,55 @@
1
1
  begin
2
+ # bundlerでインストールしたgemをrequireで読み取り可能とする。
2
3
  require 'bundler/setup'
3
4
  rescue LoadError
4
5
  puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
6
  end
6
7
 
7
- require 'rdoc/task'
8
+ # requires
9
+ require 'bundler/gem_tasks' # build, clobber, release などのコマンドを使用可能とする。
10
+ require 'rdoc/task' # RDoc::Taskクラスのrequireを行う。
11
+ require 'rake/testtask' # Rake::TestTaskクラスのrequireを行う。
12
+ require 'rake/file_utils_ext' # rake用file_utilsの拡張
8
13
 
14
+ # rdoc, clobber_rdoc コマンド定義
9
15
  RDoc::Task.new(:rdoc) do |rdoc|
10
16
  rdoc.rdoc_dir = 'rdoc'
11
17
  rdoc.title = 'Bootstrap::Honoka::Rails'
12
18
  rdoc.options << '--line-numbers'
13
- rdoc.rdoc_files.include('README.md')
14
- rdoc.rdoc_files.include('lib/**/*.rb')
19
+ rdoc.rdoc_files.include('README.md', 'VERSIONS.md', 'lib/**/*.rb')
15
20
  end
16
21
 
17
- APP_RAKEFILE = File.expand_path('test/dummy/Rakefile', __dir__)
18
- load 'rails/tasks/engine.rake'
19
-
20
- load 'rails/tasks/statistics.rake'
21
-
22
- require 'bundler/gem_tasks'
23
-
24
- require 'rake/testtask'
25
-
22
+ # test コマンド定義
26
23
  Rake::TestTask.new(:test) do |t|
27
- t.libs << 'test'
28
- t.pattern = 'test/**/*_test.rb'
29
- t.verbose = false
30
- t.warning = false
24
+ t.libs << 'test' # require pathの追加
25
+ t.pattern = 'test/**/*_test.rb' # 実行するテストコマンド
26
+ t.verbose = false # 詳細なテキストを非表示化
27
+ t.warning = false # 警告を非表示
31
28
  end
32
29
 
30
+ # test clobberコマンド定義
31
+ desc 'Remove files generated during test'
32
+ task :clobber_test do
33
+ # 下記 rm_rf を使用するとbegin rescueで囲む必要もないが、
34
+ # あえて rm_r を使用している理由は下記の通り。
35
+ #
36
+ # - 本処理は主にシステムのデフォルトで用意されているrdocに倣っている。
37
+ # ※rdocの削除処理に対して [secure属性] だけは追加している。
38
+ # - rdocの削除である `rake clobber_rdoc` コマンドを使用すると
39
+ # ::Rake::Fileutils::rm_r が使用されている。
40
+ # - その rm_r コマンドでは `rm_r @rdoc_dir rescue nil` というように
41
+ # no such file or directoryエラーが発生する事も考慮して、
42
+ # rescueを行う処理となっていた。
43
+ #
44
+ # 以上の事から、rm_rf ではなく rm_r を使用している。
45
+ begin
46
+ ::Rake::FileUtilsExt.rm_r('tmp', secure: true)
47
+ rescue StandardError
48
+ end
49
+ end
50
+
51
+ # clobberコマンドで clobber_testが動作するようにする。
52
+ task clobber: [:clobber_test]
53
+
54
+ # test コマンドをrakeのデフォルト動作とする。
33
55
  task default: :test
@@ -13,9 +13,7 @@ module Bootstrap
13
13
 
14
14
  # initializer
15
15
  initializer 'bootstrap-honoka-rails.assets' do |app|
16
- %w[stylesheets].each do |sub|
17
- app.config.assets.paths << root.join('assets', sub).to_s
18
- end
16
+ app.config.assets.paths << root.join('assets', 'stylesheets').to_s
19
17
  end
20
18
  end
21
19
  end
@@ -1,7 +1,7 @@
1
1
  module Bootstrap
2
2
  module Honoka
3
3
  module Rails
4
- VERSION = '4.0.0.2'.freeze
4
+ VERSION = '4.0.0.4'.freeze
5
5
  def self.major_ver
6
6
  VERSION.split('.').first.to_i
7
7
  end
@@ -3,6 +3,12 @@ require 'bootstrap/honoka/rails/engine'
3
3
  module Bootstrap
4
4
  module Honoka
5
5
  module Rails
6
+ class << self
7
+ def stylesheets
8
+ Dir.glob("#{File.join(File.expand_path('../../..', __dir__), 'assets', 'stylesheets')}/*.scss")
9
+ .map { |f| f.match(%r{.+/_([^/]+?)\.scss})[1] }
10
+ end
11
+ end
6
12
  end
7
13
  end
8
14
  end
@@ -1,8 +1,6 @@
1
1
  class PagesController < ApplicationController
2
- def honoka
2
+ # action定義
3
+ ::Bootstrap::Honoka::Rails.stylesheets.each do |s|
4
+ define_method(s) {}
3
5
  end
4
- def umi
5
- end
6
- def nico
7
- end
8
- end
6
+ end
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <html>
2
+ <html code="<%= response.try(:code) if defined?(response) %>">
3
3
 
4
4
  <head>
5
5
  <title>Dummy</title>
@@ -447,7 +447,8 @@
447
447
  <div class="bs-component">
448
448
  <h2>本文サンプル</h2>
449
449
  <p>グスコーブドリは、<a
450
- href="#">イーハトーヴ</a>の大きな森のなかに生まれました。おとうさんは、グスコーナドリという名高い木こりで、どんな大きな木でも、まるで赤ん坊を寝かしつけるようにわけなく切ってしまう人でした。</p>
450
+ href="#">イーハトーヴ</a>の大きな森のなかに生まれました。おとうさんは、グスコーナドリという名高い木こりで、どんな大きな木でも、まるで赤ん坊を寝かしつけるようにわけなく切ってしまう人でした。
451
+ </p>
451
452
  <p><small>テキストのこの行は、細字として扱われることを意味します。</small></p>
452
453
  <p>テキストの次のコードは、<strong>太字のテキストとしてレンダリングされます</strong>。</p>
453
454
  <p>テキストの次のコードは、 <em>斜体のテキストとしてレンダリングされます</em>。</p>
@@ -483,8 +484,8 @@
483
484
  <p class="mb-0">
484
485
  BootstrapはWebサイトやWebアプリケーションを作成するフリーソフトウェアツール集である。タイポグラフィ、フォーム、ボタン、ナビゲーション、その他構成要素やJavaScript用拡張などがHTML及びCSSベースのデザインテンプレートとして用意されている。
485
486
  </p>
486
- <footer class="blockquote-footer">出典 <cite title="Bootstrap - Wikipedia">Bootstrap - Wikipedia</cite>
487
- </footer>
487
+ <footer class="blockquote-footer">出典 <cite title="Bootstrap - Wikipedia">Bootstrap -
488
+ Wikipedia</cite></footer>
488
489
  </blockquote>
489
490
  </div>
490
491
  </div>
@@ -494,8 +495,8 @@
494
495
  <p class="mb-0">
495
496
  BootstrapはWebサイトやWebアプリケーションを作成するフリーソフトウェアツール集である。タイポグラフィ、フォーム、ボタン、ナビゲーション、その他構成要素やJavaScript用拡張などがHTML及びCSSベースのデザインテンプレートとして用意されている。
496
497
  </p>
497
- <footer class="blockquote-footer">出典 <cite title="Bootstrap - Wikipedia">Bootstrap - Wikipedia</cite>
498
- </footer>
498
+ <footer class="blockquote-footer">出典 <cite title="Bootstrap - Wikipedia">Bootstrap -
499
+ Wikipedia</cite></footer>
499
500
  </blockquote>
500
501
  </div>
501
502
  </div>
@@ -505,8 +506,8 @@
505
506
  <p class="mb-0">
506
507
  BootstrapはWebサイトやWebアプリケーションを作成するフリーソフトウェアツール集である。タイポグラフィ、フォーム、ボタン、ナビゲーション、その他構成要素やJavaScript用拡張などがHTML及びCSSベースのデザインテンプレートとして用意されている。
507
508
  </p>
508
- <footer class="blockquote-footer">出典 <cite title="Bootstrap - Wikipedia">Bootstrap - Wikipedia</cite>
509
- </footer>
509
+ <footer class="blockquote-footer">出典 <cite title="Bootstrap - Wikipedia">Bootstrap -
510
+ Wikipedia</cite></footer>
510
511
  </blockquote>
511
512
  </div>
512
513
  </div>
@@ -803,16 +804,6 @@
803
804
  <label class="custom-control-label" for="customCheck2">選択できない選択肢</label>
804
805
  </div>
805
806
  </div>
806
- <div class="form-group">
807
- <div class="custom-control custom-switch">
808
- <input type="checkbox" class="custom-control-input" id="customSwitch1" checked="">
809
- <label class="custom-control-label" for="customSwitch1">トグルスイッチ</label>
810
- </div>
811
- <div class="custom-control custom-switch">
812
- <input type="checkbox" class="custom-control-input" disabled="" id="customSwitch2">
813
- <label class="custom-control-label" for="customSwitch2">選択できないトグルスイッチ</label>
814
- </div>
815
- </div>
816
807
  <div class="form-group">
817
808
  <select class="custom-select">
818
809
  <option selected>選択してください</option>
@@ -822,15 +813,10 @@
822
813
  </select>
823
814
  </div>
824
815
  <div class="form-group">
825
- <div class="input-group mb-3">
826
- <div class="custom-file">
827
- <input type="file" class="custom-file-input" id="inputGroupFile02">
828
- <label class="custom-file-label" for="inputGroupFile02">ファイルを選択</label>
829
- </div>
830
- <div class="input-group-append">
831
- <span class="input-group-text" id="">アップロード</span>
832
- </div>
833
- </div>
816
+ <label class="custom-file">
817
+ <input type="file" id="file2" class="custom-file-input">
818
+ <span class="custom-file-control"></span>
819
+ </label>
834
820
  </div>
835
821
  </fieldset>
836
822
  </div>
@@ -889,12 +875,12 @@
889
875
  </p>
890
876
  </div>
891
877
  <div class="tab-pane fade" id="dropdown1">
892
- <p>雨ニモマケズ 風ニモマケズ 雪ニモ夏ノ暑サニモマケヌ 丈夫ナカラダヲモチ 慾ハナク 決シテ瞋ラズ イツモシズカニワラッテイル 一日ニ玄米四合ト 味噌ト少シノ野菜ヲタベ アラユルコトヲ
893
- ジブンヲカンジョウニ入レズニ ヨクミキキシワカリ ソシテワスレズ</p>
878
+ <p>雨ニモマケズ 風ニモマケズ 雪ニモ夏ノ暑サニモマケヌ 丈夫ナカラダヲモチ 慾ハナク 決シテ瞋ラズ イツモシズカニワラッテイル 一日ニ玄米四合ト 味噌ト少シノ野菜ヲタベ
879
+ アラユルコトヲ ジブンヲカンジョウニ入レズニ ヨクミキキシワカリ ソシテワスレズ</p>
894
880
  </div>
895
881
  <div class="tab-pane fade" id="dropdown2">
896
- <p>わたくしといふ現象は 假定された有機交流電燈の ひとつの青い照明です (あらゆる透明な幽霊の複合体) 風景やみんなといっしょに せはしくせはしく明滅しながら いかにもたしかにともりつづける 因果交流電燈の
897
- ひとつの青い照明です (ひかりはたもち、その電燈は失はれ)</p>
882
+ <p>わたくしといふ現象は 假定された有機交流電燈の ひとつの青い照明です (あらゆる透明な幽霊の複合体) 風景やみんなといっしょに せはしくせはしく明滅しながら
883
+ いかにもたしかにともりつづける 因果交流電燈の ひとつの青い照明です (ひかりはたもち、その電燈は失はれ)</p>
898
884
  </div>
899
885
  <div class="tab-pane fade" id="dropdown3">
900
886
  <p>
@@ -1234,87 +1220,6 @@
1234
1220
  </div>
1235
1221
  </section>
1236
1222
 
1237
- <!-- Spinners
1238
- ================================================== -->
1239
- <section class="bs-docs-section">
1240
-
1241
- <div class="row">
1242
- <div class="col-lg-12">
1243
- <div class="page-header">
1244
- <h1 id="spinners">Spinners</h1>
1245
- </div>
1246
- </div>
1247
- </div>
1248
-
1249
- <div class="row">
1250
- <div class="col-md-6 ">
1251
- <h3 id="spinners-border">Border Spinners</h3>
1252
- <div class="bs-component d-flex justify-content-around">
1253
- <div class="spinner-border" role="status">
1254
- <span class="sr-only">Loading...</span>
1255
- </div>
1256
- <div class="spinner-border text-primary" role="status">
1257
- <span class="sr-only">Loading...</span>
1258
- </div>
1259
- <div class="spinner-border text-secondary" role="status">
1260
- <span class="sr-only">Loading...</span>
1261
- </div>
1262
- <div class="spinner-border text-success" role="status">
1263
- <span class="sr-only">Loading...</span>
1264
- </div>
1265
- <div class="spinner-border text-danger" role="status">
1266
- <span class="sr-only">Loading...</span>
1267
- </div>
1268
- <div class="spinner-border text-warning" role="status">
1269
- <span class="sr-only">Loading...</span>
1270
- </div>
1271
- <div class="spinner-border text-info" role="status">
1272
- <span class="sr-only">Loading...</span>
1273
- </div>
1274
- <div class="spinner-border text-light" role="status">
1275
- <span class="sr-only">Loading...</span>
1276
- </div>
1277
- <div class="spinner-border text-dark" role="status">
1278
- <span class="sr-only">Loading...</span>
1279
- </div>
1280
- </div>
1281
- </div>
1282
-
1283
- <div class="col-md-6">
1284
- <h3 id="spinners-growing">Growing spinners</h3>
1285
- <div class="bs-component d-flex justify-content-around">
1286
- <div class="spinner-grow" role="status">
1287
- <span class="sr-only">Loading...</span>
1288
- </div>
1289
- <div class="spinner-grow text-primary" role="status">
1290
- <span class="sr-only">Loading...</span>
1291
- </div>
1292
- <div class="spinner-grow text-secondary" role="status">
1293
- <span class="sr-only">Loading...</span>
1294
- </div>
1295
- <div class="spinner-grow text-success" role="status">
1296
- <span class="sr-only">Loading...</span>
1297
- </div>
1298
- <div class="spinner-grow text-danger" role="status">
1299
- <span class="sr-only">Loading...</span>
1300
- </div>
1301
- <div class="spinner-grow text-warning" role="status">
1302
- <span class="sr-only">Loading...</span>
1303
- </div>
1304
- <div class="spinner-grow text-info" role="status">
1305
- <span class="sr-only">Loading...</span>
1306
- </div>
1307
- <div class="spinner-grow text-light" role="status">
1308
- <span class="sr-only">Loading...</span>
1309
- </div>
1310
- <div class="spinner-grow text-dark" role="status">
1311
- <span class="sr-only">Loading...</span>
1312
- </div>
1313
- </div>
1314
- </div>
1315
- </div>
1316
- </section>
1317
-
1318
1223
  <!-- Containers
1319
1224
  ================================================== -->
1320
1225
  <section class="bs-docs-section">
@@ -1387,7 +1292,8 @@
1387
1292
  <h5 class="mb-1">音ノ木坂学院</h5>
1388
1293
  <small>3 days ago</small>
1389
1294
  </div>
1390
- <p class="mb-1">通称「音ノ木坂学院」「オトノキ」。高坂穂乃果などが通う、秋葉原、神田、神保町という3つの街のはざまにある伝統校。女子高校であり、現在入学希望者は少なく廃校の検討が発表されている。
1295
+ <p class="mb-1">
1296
+ 通称「音ノ木坂学院」「オトノキ」。高坂穂乃果などが通う、秋葉原、神田、神保町という3つの街のはざまにある伝統校。女子高校であり、現在入学希望者は少なく廃校の検討が発表されている。
1391
1297
  </p>
1392
1298
  <small>スクールアイドルグループ「μ's」</small>
1393
1299
  </a>
@@ -1418,14 +1324,16 @@
1418
1324
  <div class="card-body">
1419
1325
  <h4 class="card-title">高坂穂乃果</h4>
1420
1326
  <p class="card-text">
1421
- 『ラブライブ!』の主人公。16歳の高校2年生。一人称は「私」、「穂乃果」。左側の髪の一部を黄色のリボンで結んでいるセミロングヘア。好きな食べ物はいちご、嫌いな食べ物はピーマン。</p>
1327
+ 『ラブライブ!』の主人公。16歳の高校2年生。一人称は「私」、「穂乃果」。左側の髪の一部を黄色のリボンで結んでいるセミロングヘア。好きな食べ物はいちご、嫌いな食べ物はピーマン。
1328
+ </p>
1422
1329
  </div>
1423
1330
  </div>
1424
1331
  <div class="card text-white bg-primary mb-3">
1425
1332
  <div class="card-header">Primary card</div>
1426
1333
  <div class="card-body">
1427
1334
  <h4 class="card-title">園田海未</h4>
1428
- <p class="card-text">16歳の高校2年生。一人称は「私」。腰まで伸ばした、青みがかかった黒のロングヘア。好きな食べ物は穂乃果の家のまんじゅう、嫌いな食べ物は炭酸飲料。</p>
1335
+ <p class="card-text">
1336
+ 16歳の高校2年生。一人称は「私」。腰まで伸ばした、青みがかかった黒のロングヘア。好きな食べ物は穂乃果の家のまんじゅう、嫌いな食べ物は炭酸飲料。</p>
1429
1337
  </div>
1430
1338
  </div>
1431
1339
  <div class="card text-white bg-secondary mb-3">
@@ -1433,7 +1341,8 @@
1433
1341
  <div class="card-body">
1434
1342
  <h4 class="card-title">南ことり</h4>
1435
1343
  <p class="card-text">
1436
- 16歳の高校2年生。一人称は「私」、「ことり」。ロングヘアを向かって左側の髪の一部の根元を輪にして緑のリボンで結んでいる。好きな食べ物はチーズケーキ、嫌いな食べ物はにんにく。</p>
1344
+ 16歳の高校2年生。一人称は「私」、「ことり」。ロングヘアを向かって左側の髪の一部の根元を輪にして緑のリボンで結んでいる。好きな食べ物はチーズケーキ、嫌いな食べ物はにんにく。
1345
+ </p>
1437
1346
  </div>
1438
1347
  </div>
1439
1348
  <div class="card text-white bg-success mb-3">
@@ -1461,7 +1370,8 @@
1461
1370
  <div class="card-header">Info card</div>
1462
1371
  <div class="card-body">
1463
1372
  <h4 class="card-title">絢瀬絵里</h4>
1464
- <p class="card-text">17歳の高校3年生。一人称は「私」、「エリチカ」。ロングヘアをシュシュで結んでポニーテールにしている。好きな食べ物はチョコレート、嫌いな食べ物は梅干とのり。</p>
1373
+ <p class="card-text">
1374
+ 17歳の高校3年生。一人称は「私」、「エリチカ」。ロングヘアをシュシュで結んでポニーテールにしている。好きな食べ物はチョコレート、嫌いな食べ物は梅干とのり。</p>
1465
1375
  </div>
1466
1376
  </div>
1467
1377
  <div class="card bg-light mb-3">
@@ -1487,14 +1397,16 @@
1487
1397
  <div class="card-body">
1488
1398
  <h4 class="card-title">高坂穂乃果</h4>
1489
1399
  <p class="card-text">
1490
- 『ラブライブ!』の主人公。16歳の高校2年生。一人称は「私」、「穂乃果」。左側の髪の一部を黄色のリボンで結んでいるセミロングヘア。好きな食べ物はいちご、嫌いな食べ物はピーマン。</p>
1400
+ 『ラブライブ!』の主人公。16歳の高校2年生。一人称は「私」、「穂乃果」。左側の髪の一部を黄色のリボンで結んでいるセミロングヘア。好きな食べ物はいちご、嫌いな食べ物はピーマン。
1401
+ </p>
1491
1402
  </div>
1492
1403
  </div>
1493
1404
  <div class="card border-primary mb-3">
1494
1405
  <div class="card-header">Primary card</div>
1495
1406
  <div class="card-body">
1496
1407
  <h4 class="card-title">園田海未</h4>
1497
- <p class="card-text">16歳の高校2年生。一人称は「私」。腰まで伸ばした、青みがかかった黒のロングヘア。好きな食べ物は穂乃果の家のまんじゅう、嫌いな食べ物は炭酸飲料。</p>
1408
+ <p class="card-text">
1409
+ 16歳の高校2年生。一人称は「私」。腰まで伸ばした、青みがかかった黒のロングヘア。好きな食べ物は穂乃果の家のまんじゅう、嫌いな食べ物は炭酸飲料。</p>
1498
1410
  </div>
1499
1411
  </div>
1500
1412
  <div class="card border-secondary mb-3">
@@ -1502,7 +1414,8 @@
1502
1414
  <div class="card-body">
1503
1415
  <h4 class="card-title">南ことり</h4>
1504
1416
  <p class="card-text">
1505
- 16歳の高校2年生。一人称は「私」、「ことり」。ロングヘアを向かって左側の髪の一部の根元を輪にして緑のリボンで結んでいる。好きな食べ物はチーズケーキ、嫌いな食べ物はにんにく。</p>
1417
+ 16歳の高校2年生。一人称は「私」、「ことり」。ロングヘアを向かって左側の髪の一部の根元を輪にして緑のリボンで結んでいる。好きな食べ物はチーズケーキ、嫌いな食べ物はにんにく。
1418
+ </p>
1506
1419
  </div>
1507
1420
  </div>
1508
1421
  <div class="card border-success mb-3">
@@ -1530,7 +1443,8 @@
1530
1443
  <div class="card-header">Info card</div>
1531
1444
  <div class="card-body">
1532
1445
  <h4 class="card-title">絢瀬絵里</h4>
1533
- <p class="card-text">17歳の高校3年生。一人称は「私」、「エリチカ」。ロングヘアをシュシュで結んでポニーテールにしている。好きな食べ物はチョコレート、嫌いな食べ物は梅干とのり。</p>
1446
+ <p class="card-text">
1447
+ 17歳の高校3年生。一人称は「私」、「エリチカ」。ロングヘアをシュシュで結んでポニーテールにしている。好きな食べ物はチョコレート、嫌いな食べ物は梅干とのり。</p>
1534
1448
  </div>
1535
1449
  </div>
1536
1450
  <div class="card border-light mb-3">
@@ -1564,7 +1478,8 @@
1564
1478
  frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
1565
1479
  </div>
1566
1480
  <div class="card-body">
1567
- <p class="card-text">日本国内で注目されている「スクールアイドル」が米国でも注目され、米国のテレビ番組に前回ラブライブ!優勝チームであるμ’sが出演しました。</p>
1481
+ <p class="card-text">日本国内で注目されている「スクールアイドル」が米国でも注目され、米国のテレビ番組に前回ラブライブ!優勝チームであるμ’sが出演しました。
1482
+ </p>
1568
1483
  </div>
1569
1484
  <ul class="list-group list-group-flush">
1570
1485
  <li class="list-group-item">Angelic Angel</li>
@@ -1619,7 +1534,7 @@
1619
1534
  </button>
1620
1535
  </div>
1621
1536
  <div class="modal-body">
1622
- <p contenteditable>サンプルテキストサンプルテキストサンプルテキスト</p>
1537
+ <p>サンプルテキストサンプルテキストサンプルテキスト</p>
1623
1538
  </div>
1624
1539
  <div class="modal-footer">
1625
1540
  <button type="button" class="btn btn-primary">変更を保存</button>
@@ -1628,26 +1543,7 @@
1628
1543
  </div>
1629
1544
  </div>
1630
1545
  </div>
1631
-
1632
- <h2>Toast</h2>
1633
- <div class="bs-component d-flex justify-content-center p-md-4">
1634
- <div class="toast fade show" role="alert" aria-live="assertive" aria-atomic="true">
1635
- <div class="toast-header">
1636
- <img class="bd-placeholder-img rounded mr-2" width="20" height="20"
1637
- src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABN5JREFUeNrsnN1R4zAQgEUm75cOzlQQd4BTwZm3eyNUAKkgUAFQgc3bvREqwKkAUwGmA18FnBbWcxpjWyt5JYexd0aTScCW8mm1P/IqQkwySR85+o6Dfv8jIvkSyrZQPi5ky49+i3yUgBDKmWxxDUxdStky2R4lrNQLIBzcFjsvZMcbz2Cg78jictCqjRzvzrkGyYE+4OyBgBqvZMelQzCgJTeyrRlud26rTSaAAvnyqnzkDJLsCyYi0SwlUzmWYy1ML5qRSX7ePFM+AiP5hDPNpjWyAZgHZjjCVhNnhv9/X3sfon3ggPMBnGlJsYkpoKzhs0s0pH3grBFO6PC7Fs4B4TJr6mjbA86NA3vzZWJtjfTM4pqmQCxCI25qb8DWXDrUGIByKuGsbG8yt7jmRXH3qlxAzGHgwl0sKYByjhE1i3e1AdTWsYkdWigwo44vWzRMQtzlRCSYjJP4nGmJCRNtqNkyky+USe2DWCwwHJs3L0ZJC1xLV9oQHDQgFwNskL8df1seAqBiYEBdSzIcHJBNPuNRQs7Ux9ZIC58q3jBBYKi7BPLDUtGoRYMhh72iqyEALQ5Biwh/B00TFEjGgLhV2LDfEFvBYO9gd/LKhQaFnoBE2NcSg0luBxAAdF3EPRcHIggE2okQXuKpyuvm3IAWjEsmRiCx8G+/SsoTkEGWGPN+s62QEuvZECODdS8bZN3HmH3vOpJgds0RBpv4Nhp0wggKvFGKrdp2jdAwh4wOoaziH5gMk2D3YIw0AsvrRhOhBQjrhwIt0qQj11Vg6TuSjgaCtquBe++4bM+1L2Rkg4YKEi3k51DJqs4m7D1CyHzsKpgCCsTIZALEDEi3nVFOGtQt+dgBhdMSa3fxFDijXmLaGIi7PvC7AYrECMUEkC46zccOSOfByrED0i2xwvPYo4MBRKz9eRuzBlEAjXqJUdR51Eb65zfTIDZ7OOdaYi6CRLR9NnvTb74BRb60B1Oa6tBKMLQqzgkDpmyz5gxgYBJsD63UZUl5rMxlg5wmqaAxskHF6xNjbAPa9yrve+kDEEXNXyzhXMmXZ0dB38fTW6jF7vOwgQtQYQEnEUznPAjaZH3ohgJoyQ0INWft0dZan0yaEVXVCBAcTmkbDLrurfAv1Wki/0tMfdaNSyfpMO6J4Rgz8VmJAYf3jqD1gYSHZ1jjoICqPbqlg9pDMcjgFe9kS+uFBgzF6nB8a089x8pRvFAoX/5C878XhPtBTHXaUYHxi2HMiRxvRomTOOuDbgj2KiTAXmnKUziMe1XAxWKDtB4KTwzGDEHnrmtWsR/dJGSCdkBmTdnn4gAUthje3MIjxh3ejzrrUCR1T9SkLQegPUFdvxjZFk3QzWzQFK8oB34pIccOy+sKohYt+gJKLdb4rkdSCzCewSNiSzAdoeSEqtejalHcC1DDeXmKtA3ujnh9FUxuDYwyaOy18v7WoK/eXuzaAE7eVv6GsG+FG9mo3g+XeO++SIDwC1M72xBgc+8+pi1lvZS+Uq44iNLZra54Emd2xQgpxZrrrr7axnSuKwk2ymswbnhu8SZGP3aC3iMhxk/GcBr6gxTlTPw/n3FHqZc2TvxaXK71L8HgL71shdnGfCF6/i4QVawyY9SkKmPf4WB77f8i+OpwS9NJwcqbPvoAM8kkPPJPgAEAyEmTr+M2lQ0AAAAASUVORK5CYII=">
1638
- <strong class="mr-auto">Honoka</strong>
1639
- <small>11分前</small>
1640
- <button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close">
1641
- <span aria-hidden="true">&times;</span>
1642
- </button>
1643
- </div>
1644
- <div class="toast-body">
1645
- これはToast型通知メッセージのサンプルです。
1646
- </div>
1647
- </div>
1648
- </div>
1649
1546
  </div>
1650
-
1651
1547
  </div>
1652
1548
  <div class="col-lg-6">
1653
1549
  <h2>Popovers</h2>
@@ -1684,7 +1580,6 @@
1684
1580
 
1685
1581
  </div>
1686
1582
 
1687
-
1688
1583
  <script type="text/javascript">
1689
1584
  $('.bs-component [data-toggle="popover"]').popover();
1690
1585
  $('.bs-component [data-toggle="tooltip"]').tooltip();
@@ -58,7 +58,9 @@
58
58
  <nav class="navbar navbar-expand-lg navbar-light bg-light">
59
59
  <div class="container">
60
60
  <a class="navbar-brand" href="./">
61
- <img src="assets/img/brand.png" width="30" height="30" class="d-inline-block align-top mr-1" alt="">
61
+ <img
62
+ src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAMAAABiM0N1AAAAMFBMVEX/ueP/6Pb/mNb/otr/rN7/8/r/////0e3/3PH/y+r/ntj/+f3/wOb/xuj/mtf////Ltbk5AAAAEHRSTlP///////////////////8A4CNdGQAAAdpJREFUeNrtmMGSpCAMQCEJGgJk/v9v15qmdCVOo9A1l913TflKlIQE9/Uh/lVR4OgIBUCQcuQwJvKFoIGKfypKK8EltKYHohQFfkRiuitihLcI3xIFgi4U+iIWuIFwT1TgJuWtaHFwG7cYkfE8NFmRg0fkn0QFHlKuRQyP4StREHiMhAsRwXOUrIhhCG5FSWAITI0owiDxLEoCg0g6idY2u48a0IusJxE2f3VZ9t3QiSj+LfJwIi8bGSq9iK8imxzKywZDpRcpu8hsxrBsBIVKJ0KHKMCZ5RuodCNhF/GciHdRvFwAVLqRWEW2oL0+qUKlF3k5rhK/ND+5E6FdhJ1t14ngLhKAkRSxIphDPy8SmALNx54WEUxBZkMO4kyKDBJN0g7CpowMEkxhG0LRltoDVbhNMcX/QJxDuARJoMGfjiM9i7JnEjAosclZfHdAghCHjNCAm9+1i17fH9mKsX0pJfYRW4+kXhOh7vScYg7spNdEfCW0JszB55dK8VtrPZjuNFqKa/CREClzXWgL32z9hIoPG34lUbDQ/WZUBYlQRHvN6Hx7/PmG/SBPjxDzQ838mDU/+P3CKDo/HD99KeRfvECYv9Kw+IKmGBQ/fO2TCQW0Xvv8vxqb4w8hOpDUx5Nj5wAAAABJRU5ErkJggg=="
63
+ width="30" height="30" class="d-inline-block align-top mr-1" alt="">
62
64
  Nico
63
65
  </a>
64
66
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar" aria-controls="navbar"
@@ -57,7 +57,9 @@
57
57
  <nav class="navbar navbar-expand-lg navbar-light bg-light">
58
58
  <div class="container">
59
59
  <a class="navbar-brand" href="./">
60
- <img src="assets/img/brand.png" width="30" height="30" class="d-inline-block align-top mr-1" alt="Umi">
60
+ <img
61
+ src="data:image/png;base64,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"
62
+ width="30" height="30" class="d-inline-block align-top mr-1" alt="">
61
63
  Umi
62
64
  </a>
63
65
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar" aria-controls="navbar"
@@ -1,11 +1,7 @@
1
1
  require_relative 'boot'
2
2
 
3
3
  require 'rails/all'
4
- require 'jquery-rails'
5
- require 'sprockets'
6
- require 'turbolinks'
7
-
8
- Bundler.require(*Rails.groups)
4
+ Bundler.require(*Rails.groups << :development)
9
5
 
10
6
  module Dummy
11
7
  class Application < Rails::Application
@@ -1,5 +1,5 @@
1
1
  Rails.application.routes.draw do
2
- get 'pages/honoka'
3
- get 'pages/umi'
4
- get 'pages/nico'
2
+ ::Bootstrap::Honoka::Rails.stylesheets.each do |s|
3
+ get "pages/#{s}"
4
+ end
5
5
  end
File without changes
data/test/honoka_test.rb CHANGED
@@ -1,10 +1,44 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class Bootstrap::Honoka::Rails::Test < ActionDispatch::IntegrationTest
4
- %w[honoka umi nico].each do |name|
5
- test "access #{name} test" do
6
- get "/pages/#{name}"
7
- assert_response :success
4
+ # Mix-in
5
+ include DummyIntegration
6
+
7
+ # constant stylesheets
8
+ STYLESHEETS = ::Bootstrap::Honoka::Rails.stylesheets
9
+
10
+ # constant data variables
11
+ TEST_PAGES = STYLESHEETS.map(&:freeze).freeze
12
+ TEST_PATHS = TEST_PAGES.map { |el| "/pages/#{el}".freeze }.freeze
13
+ TEST_DATAS = TEST_PAGES.zip(TEST_PATHS).map(&:freeze).freeze
14
+
15
+ # access test
16
+ TEST_DATAS.each do |page, path|
17
+ test "access #{page}" do
18
+ begin
19
+ # ページのアクセステスト
20
+ visit path
21
+
22
+ # ステータスコードの取得を行う
23
+ # https://stackoverflow.com/questions/7908907/how-to-test-the-response-code-with-capybara-selenium
24
+ response_code = Capybara.page.first('html')[:code].to_i
25
+ assert response_code == 200, 'エラー:正しくページを取得できませんでした。'
26
+ ensure
27
+ # エラーであっても表示ページのscreenshotは撮る。
28
+ take_full_page_screenshot!
29
+ end
30
+ end
31
+ end
32
+
33
+ # compile test
34
+ TEST_PAGES.each do |page|
35
+ test "compile #{page}" do
36
+ # Sassのコンパイルを行う
37
+ SassC::Engine.new("@import '_#{page}';",
38
+ load_paths: app.config.assets.paths).render
39
+
40
+ # 例外が発生せずここまで来れば assert成功
41
+ assert true
8
42
  end
9
43
  end
10
44
  end
@@ -0,0 +1,57 @@
1
+ # require files
2
+ require 'fileutils'
3
+
4
+ # DummyIntegration
5
+ module DummyIntegration
6
+ # Capybara系のヘルパーメソッド
7
+
8
+ # Mix-in
9
+ include Capybara::DSL
10
+ include Capybara::Minitest::Assertions
11
+
12
+ def setup
13
+ super
14
+ cleanup_cache_files
15
+ end
16
+
17
+ def teardown
18
+ super
19
+ Capybara.reset_sessions!
20
+ Capybara.use_default_driver
21
+ end
22
+
23
+ private
24
+
25
+ def cleanup_cache_files
26
+ FileUtils.rm_rf('test/dummy/tmp/cache', secure: true)
27
+ end
28
+
29
+ def screenshot_to_file!(path, log_append = '')
30
+ # save screenshot!
31
+ page.save_screenshot File.join(ROOT_PATH, path)
32
+ ::Minitest::Reporters::DummyReporter.log_strings_append! "Screenshot: Saved to #{path} #{log_append}"
33
+ end
34
+
35
+ # screenshotを撮る
36
+ def screenshot!
37
+ # パスを設定してファイルを保存する。
38
+ path = "tmp/#{name}.png"
39
+ screenshot_to_file! path
40
+ end
41
+
42
+ # 画面リサイズ後にscreenshotを撮る
43
+ def take_full_page_screenshot!
44
+ # https://testingrepository.com/full-page-screenshot-with-selenium/
45
+ # https://github.com/teampoltergeist/poltergeist/issues/165
46
+ # https://sqa.stackexchange.com/questions/9007/how-to-handle-time-out-receiving-message-from-the-renderer-in-chrome-driver
47
+
48
+ # 幅と高さを取得しブラウザのリサイズを行う。
49
+ width = Capybara.page.execute_script('return screen.width;')
50
+ height = Capybara.page.execute_script('return Math.max( document.body.scrollHeight , document.body.offsetHeight , document.documentElement.clientHeight , document.documentElement.scrollHeight , document.documentElement.offsetHeight );')
51
+ window = Capybara.current_session.driver.browser.manage.window
52
+ window.resize_to(width, height)
53
+
54
+ # スクリーンショットの保存
55
+ screenshot_to_file! "tmp/#{name}.png", "- W:H=#{width}:#{height}"
56
+ end
57
+ end
@@ -0,0 +1,61 @@
1
+ require 'minitest/reporters'
2
+
3
+ module Minitest
4
+ module Reporters
5
+ class DummyReporter < DefaultReporter
6
+ # 最後にログ出力する際の文字列配列(下記注意点)
7
+ #
8
+ # 1)特異メソッド内から下記変数を参照する為、クラス変数にするべきと思われるかもしれないが、
9
+ # 後にDummyReportersから継承される可能性を考慮すると、
10
+ # クラスインスタンス変数を使用する方が良いとの事。
11
+ # Effective Ruby 項目15
12
+ # 2)クラスインスタンス変数をクラスメソッドで使用する点から
13
+ # SingletonをIncludeする事も考慮したが、
14
+ # その場合
15
+ # ・Instanceメソッドからinitializeに引数が渡せない。
16
+ # ・どうしても親クラスのinitializeにデータを渡す際、
17
+ # def set_options( options = {} ); initialize(options); end;
18
+ # というようなRubyとして正か判断できないややこしい処理となりそうだった。
19
+ # (一般的に考えてコンストラクタを無理やり呼び出す違和感のあるやり方)
20
+ # という観点からSingletonは見送りとした。
21
+ @log_strings = []
22
+
23
+ # 特異メソッド
24
+ class << self
25
+ attr_reader :log_strings
26
+
27
+ def log_strings_append!(rhs)
28
+ @log_strings << rhs unless rhs.nil?
29
+ end
30
+ end
31
+
32
+ # 独自カラー
33
+ def cyan(string)
34
+ color? ? ANSI::Code.cyan(string) : string
35
+ end
36
+
37
+ def magenta(string)
38
+ color? ? ANSI::Code.magenta(string) : string
39
+ end
40
+
41
+ # レポートを行う
42
+ def on_report
43
+ super
44
+ return if self.class.log_strings.empty?
45
+
46
+ puts
47
+ puts cyan('------------------------------------------------------------')
48
+ puts magenta('[TEST INFO]')
49
+ self.class.log_strings.each do |data|
50
+ puts yellow(data)
51
+ end
52
+ puts cyan('------------------------------------------------------------')
53
+ puts
54
+ end
55
+ end
56
+
57
+ # セットアップ
58
+ reporter_options = { color: true }
59
+ ::Minitest::Reporters.use! [DummyReporter.new(reporter_options)]
60
+ end
61
+ end
data/test/test_helper.rb CHANGED
@@ -1,8 +1,52 @@
1
- require 'minitest/autorun'
2
- require 'minitest/reporters'
3
-
4
1
  # Configure Rails Environment
5
2
  ENV['RAILS_ENV'] = 'test'
6
3
 
7
- require_relative '../test/dummy/config/environment'
8
- require 'rails/test_help'
4
+ # require environment / rails / capybara
5
+ require_relative 'dummy/config/environment'
6
+ require 'rails/test_help' # 内部でminitestのautorunも行う。
7
+ require 'capybara/rails' # 内部でcapybara/dslもrequireする。
8
+ require 'capybara/minitest'
9
+
10
+ # settings
11
+ Webdrivers.cache_time = 10_000
12
+ ROOT_PATH = File.expand_path('../', File.dirname(__FILE__)).freeze
13
+
14
+ # support directory files require
15
+ Dir['test/support/**/*.rb'].each do |file|
16
+ require_relative File.join('.', file[5..-4])
17
+ end
18
+
19
+ # -----------------------------------------------------------------------------
20
+
21
+ # https://groups.google.com/forum/#!topic/chromedriver-users/ZBEju24L5ww
22
+
23
+ # Settings Selenium Timeout
24
+ client = Selenium::WebDriver::Remote::Http::Default.new
25
+ client.read_timeout = 1000 # 1000 second read wait
26
+
27
+ # Capybara driver settings
28
+ Capybara.register_driver :selenium_chrome_headless do |app|
29
+ Capybara::Selenium::Driver.load_selenium
30
+ browser_options = ::Selenium::WebDriver::Chrome::Options.new.tap do |opts|
31
+ opts.args << 'start-maximized'
32
+ opts.args << 'enable-automation'
33
+ opts.args << '--window-size=1200,768'
34
+ opts.args << '--headless'
35
+ opts.args << '--disable-gpu'
36
+ opts.args << '--no-sandbox'
37
+ opts.args << '--disable-infobars'
38
+ opts.args << '--disable-dev-shm-usage'
39
+ opts.args << '--disable-browser-side-navigation'
40
+ opts.args << '--disable-site-isolation-trials'
41
+ end
42
+ Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options, http_client: client)
43
+ end
44
+
45
+ # Capybara settings
46
+ Capybara.configure do |config|
47
+ config.server_port = 3000
48
+ config.app_host = "http://localhost:#{config.server_port}"
49
+ config.default_driver = :selenium_chrome_headless
50
+ config.javascript_driver = :selenium_chrome_headless
51
+ config.server = :webrick
52
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bootstrap-honoka-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0.2
4
+ version: 4.0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takmg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-01 00:00:00.000000000 Z
11
+ date: 2019-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bootstrap
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 4.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: capybara
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 3.20.2
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 3.20.2
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: jquery-rails
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +80,34 @@ dependencies:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
82
  version: 1.3.6
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry-byebug
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 3.7.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: 3.7.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: sassc
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 2.0.0
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 2.0.0
69
111
  - !ruby/object:Gem::Dependency
70
112
  name: sprockets-rails
71
113
  requirement: !ruby/object:Gem::Requirement
@@ -108,7 +150,21 @@ dependencies:
108
150
  - - "~>"
109
151
  - !ruby/object:Gem::Version
110
152
  version: 4.1.20
111
- description: Gem to handle -Bootstrap honoka- easily
153
+ - !ruby/object:Gem::Dependency
154
+ name: webdrivers
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: 3.9.4
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: 3.9.4
167
+ description: Gem to handle -Bootstrap Honoka, Umi, Nico, Rin- easily
112
168
  email:
113
169
  - Takmg@example.com
114
170
  executables: []
@@ -162,16 +218,16 @@ files:
162
218
  - test/dummy/config/environments/production.rb
163
219
  - test/dummy/config/environments/test.rb
164
220
  - test/dummy/config/initializers/assets.rb
165
- - test/dummy/config/initializers/backtrace_silencers.rb
166
221
  - test/dummy/config/initializers/filter_parameter_logging.rb
167
- - test/dummy/config/initializers/inflections.rb
168
- - test/dummy/config/initializers/mime_types.rb
169
222
  - test/dummy/config/initializers/wrap_parameters.rb
170
223
  - test/dummy/config/locales/en.yml
171
224
  - test/dummy/config/routes.rb
172
225
  - test/dummy/package.json
173
226
  - test/dummy/production_key_generate.sh
227
+ - test/dummy/public/favicon.ico
174
228
  - test/honoka_test.rb
229
+ - test/support/dummy_integration.rb
230
+ - test/support/dummy_reporters.rb
175
231
  - test/test_helper.rb
176
232
  homepage: https://github.com/Takmg/bootstrap-honoka-rails
177
233
  licenses:
@@ -195,7 +251,7 @@ requirements: []
195
251
  rubygems_version: 3.0.3
196
252
  signing_key:
197
253
  specification_version: 4
198
- summary: Gem to handle -Bootstrap honoka- easily
254
+ summary: Gem to handle -Bootstrap Honoka, Umi, Nico, Rin- easily
199
255
  test_files:
200
256
  - test/dummy/Rakefile
201
257
  - test/dummy/app/assets/config/manifest.js
@@ -221,14 +277,14 @@ test_files:
221
277
  - test/dummy/config/environments/production.rb
222
278
  - test/dummy/config/environments/test.rb
223
279
  - test/dummy/config/initializers/assets.rb
224
- - test/dummy/config/initializers/backtrace_silencers.rb
225
280
  - test/dummy/config/initializers/filter_parameter_logging.rb
226
- - test/dummy/config/initializers/inflections.rb
227
- - test/dummy/config/initializers/mime_types.rb
228
281
  - test/dummy/config/initializers/wrap_parameters.rb
229
282
  - test/dummy/config/locales/en.yml
230
283
  - test/dummy/config/routes.rb
231
284
  - test/dummy/package.json
232
285
  - test/dummy/production_key_generate.sh
286
+ - test/dummy/public/favicon.ico
233
287
  - test/honoka_test.rb
288
+ - test/support/dummy_integration.rb
289
+ - test/support/dummy_reporters.rb
234
290
  - test/test_helper.rb
@@ -1,7 +0,0 @@
1
- # Be sure to restart your server when you modify this file.
2
-
3
- # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
4
- # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
5
-
6
- # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
7
- # Rails.backtrace_cleaner.remove_silencers!
@@ -1,16 +0,0 @@
1
- # Be sure to restart your server when you modify this file.
2
-
3
- # Add new inflection rules using the following format. Inflections
4
- # are locale specific, and you may define rules for as many different
5
- # locales as you wish. All of these examples are active by default:
6
- # ActiveSupport::Inflector.inflections(:en) do |inflect|
7
- # inflect.plural /^(ox)$/i, '\1en'
8
- # inflect.singular /^(ox)en/i, '\1'
9
- # inflect.irregular 'person', 'people'
10
- # inflect.uncountable %w( fish sheep )
11
- # end
12
-
13
- # These inflection rules are supported but not enabled by default:
14
- # ActiveSupport::Inflector.inflections(:en) do |inflect|
15
- # inflect.acronym 'RESTful'
16
- # end
@@ -1,4 +0,0 @@
1
- # Be sure to restart your server when you modify this file.
2
-
3
- # Add new mime types for use in respond_to blocks:
4
- # Mime::Type.register "text/richtext", :rtf