smalruby-editor 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.

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