smalruby-editor 0.0.5 → 0.0.6

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.

Potentially problematic release.


This version of smalruby-editor might be problematic. Click here for more details.

Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rspec +2 -1
  4. data/.rubocop.yml +18 -0
  5. data/.travis.yml +24 -23
  6. data/LEGAL +13 -0
  7. data/README.rdoc +1 -0
  8. data/Rakefile +3 -0
  9. data/app/assets/javascripts/application.js +1 -1
  10. data/app/assets/javascripts/editor.js.coffee +60 -15
  11. data/app/assets/stylesheets/application.css +1 -2
  12. data/app/assets/stylesheets/flatstrap-custom.css.scss +2 -0
  13. data/app/controllers/editor_controller.rb +0 -24
  14. data/app/controllers/source_codes_controller.rb +67 -0
  15. data/app/models/source_code.rb +42 -0
  16. data/app/views/editor/index.html.erb +5 -3
  17. data/bin/smalruby-editor +11 -0
  18. data/config/application.rb +8 -20
  19. data/config/boot.rb +3 -0
  20. data/config/environments/development.rb +2 -1
  21. data/config/environments/production.rb +12 -6
  22. data/config/environments/standalone.rb +3 -2
  23. data/config/environments/test.rb +14 -4
  24. data/config/initializers/backtrace_silencers.rb +4 -2
  25. data/config/initializers/session_store.rb +2 -1
  26. data/config/initializers/wrap_parameters.rb +2 -1
  27. data/config/routes.rb +10 -6
  28. data/config/unicorn.rb +7 -6
  29. data/db/migrate/20131216121603_create_source_codes.rb +9 -0
  30. data/db/migrate/20131219045113_add_filename_to_source_code.rb +5 -0
  31. data/db/schema.rb +8 -1
  32. data/lib/smalruby_editor.rb +29 -15
  33. data/lib/smalruby_editor/version.rb +1 -1
  34. data/lib/tasks/rspec.rake +2 -2
  35. data/lib/tasks/rubocop.rake +3 -0
  36. data/public/fonts/FontAwesome.otf +0 -0
  37. data/public/fonts/fontawesome-webfont.eot +0 -0
  38. data/public/fonts/fontawesome-webfont.ttf +0 -0
  39. data/public/fonts/fontawesome-webfont.woff +0 -0
  40. data/smalruby-editor.gemspec +3 -3
  41. data/spec/acceptance/readme.md +3 -0
  42. data/spec/acceptance/text_editor/base.feature +24 -0
  43. data/spec/acceptance/text_editor/check.feature +20 -0
  44. data/spec/acceptance/text_editor/load.feature +74 -0
  45. data/spec/acceptance/text_editor/save.feature +31 -0
  46. data/spec/controllers/editor_controller_spec.rb +2 -63
  47. data/spec/controllers/source_codes_controller_spec.rb +296 -0
  48. data/spec/models/source_code_spec.rb +44 -0
  49. data/spec/spec_helper.rb +123 -65
  50. data/spec/steps/ace_steps.rb +60 -0
  51. data/spec/steps/global_variable.rb +39 -0
  52. data/spec/steps/text_editor_steps.rb +160 -0
  53. data/spec/support/capybara.rb +17 -0
  54. metadata +49 -19
  55. data/spec/acceptance/editor.feature +0 -68
  56. data/spec/steps/editor_steps.rb +0 -123
@@ -0,0 +1,17 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ def poltergeist?
4
+ /\Apoltergeist/ =~ Capybara.javascript_driver.to_s
5
+ end
6
+
7
+ def selenium?
8
+ /\Aselenium/ =~ Capybara.javascript_driver.to_s
9
+ end
10
+
11
+ def windows?
12
+ /windows|mingw|cygwin/i =~ RbConfig::CONFIG['arch']
13
+ end
14
+
15
+ def downloads_dir
16
+ Pathname(Rails.root).join('tmp/downloads')
17
+ end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smalruby-editor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouji Takao
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-04 00:00:00.000000000 Z
11
+ date: 2013-12-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 4.0.0
19
+ version: 4.0.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 4.0.0
26
+ version: 4.0.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sqlite3
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - ~>
116
116
  - !ruby/object:Gem::Version
117
- version: '1.2'
117
+ version: '2.0'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - ~>
123
123
  - !ruby/object:Gem::Version
124
- version: '1.2'
124
+ version: '2.0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: ace-rails-ap
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -151,7 +151,7 @@ dependencies:
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
- name: font-awesome-rails
154
+ name: jquery-fileupload-rails
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - '>='
@@ -165,7 +165,7 @@ dependencies:
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
- name: jquery-fileupload-rails
168
+ name: shared-mime-info
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - '>='
@@ -234,9 +234,11 @@ extra_rdoc_files:
234
234
  files:
235
235
  - .gitignore
236
236
  - .rspec
237
+ - .rubocop.yml
237
238
  - .ruby-version
238
239
  - .simplecov
239
240
  - .travis.yml
241
+ - LEGAL
240
242
  - LICENSE
241
243
  - Procfile
242
244
  - README.rdoc
@@ -247,14 +249,17 @@ files:
247
249
  - app/assets/javascripts/editor.js.coffee
248
250
  - app/assets/stylesheets/application.css
249
251
  - app/assets/stylesheets/editor.css.scss
252
+ - app/assets/stylesheets/flatstrap-custom.css.scss
250
253
  - app/controllers/application_controller.rb
251
254
  - app/controllers/concerns/.keep
252
255
  - app/controllers/editor_controller.rb
256
+ - app/controllers/source_codes_controller.rb
253
257
  - app/helpers/application_helper.rb
254
258
  - app/helpers/editor_helper.rb
255
259
  - app/mailers/.keep
256
260
  - app/models/.keep
257
261
  - app/models/concerns/.keep
262
+ - app/models/source_code.rb
258
263
  - app/views/editor/index.html.erb
259
264
  - app/views/layouts/application.html.erb
260
265
  - bin/bundle
@@ -282,6 +287,8 @@ files:
282
287
  - config/locales/en.yml
283
288
  - config/routes.rb
284
289
  - config/unicorn.rb
290
+ - db/migrate/20131216121603_create_source_codes.rb
291
+ - db/migrate/20131219045113_add_filename_to_source_code.rb
285
292
  - db/schema.rb
286
293
  - db/seeds.rb
287
294
  - lib/assets/.keep
@@ -290,30 +297,44 @@ files:
290
297
  - lib/tasks/.keep
291
298
  - lib/tasks/gem.rake
292
299
  - lib/tasks/rspec.rake
300
+ - lib/tasks/rubocop.rake
293
301
  - log/.keep
294
302
  - public/404.html
295
303
  - public/422.html
296
304
  - public/500.html
297
305
  - public/favicon.ico
306
+ - public/fonts/FontAwesome.otf
307
+ - public/fonts/fontawesome-webfont.eot
308
+ - public/fonts/fontawesome-webfont.ttf
309
+ - public/fonts/fontawesome-webfont.woff
298
310
  - public/robots.txt
299
311
  - smalruby-editor.gemspec
300
- - spec/acceptance/editor.feature
312
+ - spec/acceptance/readme.md
313
+ - spec/acceptance/text_editor/base.feature
314
+ - spec/acceptance/text_editor/check.feature
315
+ - spec/acceptance/text_editor/load.feature
316
+ - spec/acceptance/text_editor/save.feature
301
317
  - spec/controllers/editor_controller_spec.rb
318
+ - spec/controllers/source_codes_controller_spec.rb
302
319
  - spec/fixtures/files/01.rb
303
320
  - spec/fixtures/files/favicon.ico
304
321
  - spec/helpers/editor_helper_spec.rb
305
322
  - spec/lib/smalruby_editor_spec.rb
323
+ - spec/models/source_code_spec.rb
306
324
  - spec/spec_helper.rb
307
- - spec/steps/editor_steps.rb
325
+ - spec/steps/ace_steps.rb
326
+ - spec/steps/global_variable.rb
327
+ - spec/steps/text_editor_steps.rb
328
+ - spec/support/capybara.rb
308
329
  - vendor/assets/javascripts/.keep
309
330
  - vendor/assets/stylesheets/.keep
310
- - public/assets/application-1cd3f5170c998a23c96c9c853c2519a0.js
311
- - public/assets/application-1cd3f5170c998a23c96c9c853c2519a0.js.gz
312
- - public/assets/application-7dfa749c08d706f7273aa6f60cfafefa.css
313
- - public/assets/application-7dfa749c08d706f7273aa6f60cfafefa.css.gz
331
+ - public/assets/application-abb819194306ad9fdda88e33fda0b06c.js
332
+ - public/assets/application-abb819194306ad9fdda88e33fda0b06c.js.gz
333
+ - public/assets/application-f51ea0e777d97f12a8ce84308f31eb57.css
334
+ - public/assets/application-f51ea0e777d97f12a8ce84308f31eb57.css.gz
314
335
  - public/assets/favicon-c7ae857bb9d06de8742ae2d337157e83.ico
315
336
  - public/assets/loading-e8e6dd7833131c92a6c3b9c8ccc6a6ac.gif
316
- - public/assets/manifest-3813515e29606baf063c501afbfdb552.json
337
+ - public/assets/manifest-0d0a1d57ad92e968912e72263d610a6e.json
317
338
  - public/assets/progressbar-82023a146fba2a0f6d925629ed2b09c5.gif
318
339
  homepage: https://github.com/smalruby/smalruby-editor
319
340
  licenses:
@@ -373,11 +394,20 @@ signing_key:
373
394
  specification_version: 4
374
395
  summary: A visual programming editor.
375
396
  test_files:
376
- - spec/acceptance/editor.feature
397
+ - spec/acceptance/readme.md
398
+ - spec/acceptance/text_editor/base.feature
399
+ - spec/acceptance/text_editor/check.feature
400
+ - spec/acceptance/text_editor/load.feature
401
+ - spec/acceptance/text_editor/save.feature
377
402
  - spec/controllers/editor_controller_spec.rb
403
+ - spec/controllers/source_codes_controller_spec.rb
378
404
  - spec/fixtures/files/01.rb
379
405
  - spec/fixtures/files/favicon.ico
380
406
  - spec/helpers/editor_helper_spec.rb
381
407
  - spec/lib/smalruby_editor_spec.rb
408
+ - spec/models/source_code_spec.rb
382
409
  - spec/spec_helper.rb
383
- - spec/steps/editor_steps.rb
410
+ - spec/steps/ace_steps.rb
411
+ - spec/steps/global_variable.rb
412
+ - spec/steps/text_editor_steps.rb
413
+ - spec/support/capybara.rb
@@ -1,68 +0,0 @@
1
- # encoding: utf-8
2
- # language: ja
3
- @javascript
4
- 機能: Rubyのプログラムをテキストエディタ機能で編集できる
5
- シナリオ: トップページにアクセスしてエディタ画面を表示する
6
- もし "トップページ" にアクセスする
7
-
8
- ならば "Rubyタブ" が表示されていること
9
- かつ "テキストエディタ" が表示されていること
10
- かつ "プログラム名の入力欄" が表示されていること
11
- かつ "セーブボタン" が表示されていること
12
-
13
- シナリオ: セーブボタンを押してプログラムを保存できる
14
- 前提 "エディタ" 画面を表示する
15
- かつ "テキストエディタ" にプログラムを入力済みである:
16
- """
17
- puts "Hello, World!"
18
- """
19
-
20
- もし プログラムの名前に "01.rb" を指定する
21
- かつ "セーブボタン" をクリックする
22
- かつ JavaScriptによるリクエストが終わるまで待つ
23
-
24
- ならば "01.rb" をダウンロードする
25
- かつ ダウンロードしたファイルの内容が正しい:
26
- """
27
- puts "Hello, World!"
28
- """
29
-
30
- シナリオ: ファイル名を入力せずにセーブボタンを押す
31
- 前提 "エディタ" 画面を表示する
32
-
33
- もし "セーブボタン" をクリックする
34
-
35
- ならば ダウンロードしない
36
- かつ "プログラム名の入力欄" にフォーカスが移る
37
-
38
- シナリオ: ロードボタンを押してプログラムを読み込む
39
- 前提 "エディタ" 画面を表示する
40
-
41
- もし "files/01.rb" をアップロードする
42
- かつ JavaScriptによるリクエストが終わるまで待つ
43
-
44
- ならば "テキストエディタ" に "files/01.rb" を読み込む
45
- かつ "プログラム名の入力欄" は "01.rb" である
46
-
47
- シナリオ: プログラムを入力済み状態でプログラムを読み込む
48
- 前提 "エディタ" 画面を表示する
49
- かつ "テキストエディタ" にプログラムを入力済みである:
50
- """
51
- puts "Hello, World!"
52
- """
53
-
54
- もし "files/01.rb" をアップロードする
55
- かつ JavaScriptによるリクエストが終わるまで待つ
56
-
57
- ならば "テキストエディタ" に "files/01.rb" を読み込む
58
- かつ "プログラム名の入力欄" は "01.rb" である
59
-
60
- シナリオ: ロードボタンを押して画像を読み込もうとする
61
- 前提 "エディタ" 画面を表示する
62
-
63
- もし "files/favicon.ico" をアップロードする
64
- かつ JavaScriptによるリクエストが終わるまで待つ
65
-
66
- ならば "テキストエディタ" のプログラムは "" である
67
- かつ "プログラム名の入力欄" は "" である
68
- かつ "メッセージ" に "favicon.icoはRubyのプログラムではありません" を含む
@@ -1,123 +0,0 @@
1
- # encoding: utf-8
2
-
3
- name_info = {
4
- 'トップページ' => {
5
- path: '/',
6
- },
7
- 'エディタ' => {
8
- path: '/',
9
- },
10
-
11
- 'Rubyタブ' => {
12
- id: 'ruby-tab',
13
- selector: '#ruby-tab',
14
- },
15
- 'テキストエディタ' => {
16
- id: 'text-editor',
17
- selector: '#text-editor',
18
- },
19
- 'プログラム名の入力欄' => {
20
- id: 'filename',
21
- selector: '#filename',
22
- },
23
- 'セーブボタン' => {
24
- id: 'save-button',
25
- selector: '#save-button',
26
- },
27
- 'メッセージ' => {
28
- id: 'messages',
29
- selector: '#messages',
30
- },
31
- }
32
-
33
- step ':name にアクセスする' do |name|
34
- visit name_info[name][:path]
35
- end
36
-
37
- step ':name が表示されていること' do |name|
38
- expect(page).to have_selector(name_info[name][:selector])
39
- end
40
-
41
- step ':name 画面を表示する' do |name|
42
- visit name_info[name][:path]
43
- end
44
-
45
- step ':text_editor にプログラムを入力済みである:' do |text_editor, source|
46
- page.execute_script(<<-JS)
47
- ace.edit('#{name_info[text_editor][:id]}')
48
- .getSession()
49
- .getDocument()
50
- .setValue('#{source}')
51
- JS
52
- end
53
-
54
- step 'プログラムの名前に :filename を指定する' do |filename|
55
- fill_in('filename', with: filename)
56
- end
57
-
58
- step ':name をクリックする' do |name|
59
- click_button(name_info[name][:id])
60
- end
61
-
62
- step ':filename をダウンロードする' do |filename|
63
- expect(page.response_headers['Content-Disposition'])
64
- .to eq("attachment; filename=\"#{filename}\"")
65
- expect(page.response_headers['Content-Type'])
66
- .to eq('text/plain; charset=utf-8')
67
- end
68
-
69
- step 'ダウンロードしたファイルの内容が正しい:' do |source|
70
- # TODO
71
- end
72
-
73
- step 'ダウンロードしない' do
74
- # TODO
75
- end
76
-
77
- step ':name にフォーカスが移る' do |name|
78
- # 現在のPhantomJSでは$(':focus')は動作しない
79
- # https://github.com/netzpirat/guard-jasmine/issues/48
80
- expect(page.evaluate_script(<<-JS)).to be_true
81
- $('#filename').get(0) == document.activeElement
82
- JS
83
- end
84
-
85
- step ':filename をアップロードする' do |filename|
86
- page.execute_script("$('#load-file').show()")
87
- attach_file('load-file', Pathname(fixture_path).join(filename))
88
- end
89
-
90
- step ':text_editor に :filename を読み込む' do |text_editor, filename|
91
- expect(page.evaluate_script(<<-JS)).to eq(Pathname(fixture_path).join(filename).read)
92
- ace.edit('#{name_info[text_editor][:id]}')
93
- .getSession()
94
- .getDocument()
95
- .getValue()
96
- JS
97
- end
98
-
99
- step 'JavaScriptによるリクエストが終わるまで待つ' do
100
- start_time = Time.now
101
- page.evaluate_script('jQuery.isReady&&jQuery.active==0').class.should_not eql(String) until page.evaluate_script('jQuery.isReady&&jQuery.active==0') or (start_time + 5.seconds) < Time.now do
102
- sleep 1
103
- end
104
- end
105
-
106
- step ':text_editor のプログラムは :value である' do |text_editor, value|
107
- expect(page.evaluate_script(<<-JS)).to eq(value)
108
- ace.edit('#{name_info[text_editor][:id]}')
109
- .getSession()
110
- .getDocument()
111
- .getValue()
112
- JS
113
- end
114
-
115
- step ':name は :value である' do |name, value|
116
- expect(page.evaluate_script(<<-JS)).to eq(value)
117
- $('#{name_info[name][:selector]}').val()
118
- JS
119
- end
120
-
121
- step ':name に :message を含む' do |name, message|
122
- expect(page.find(name_info[name][:selector])).to have_content(message)
123
- end