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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rspec +2 -1
- data/.rubocop.yml +18 -0
- data/.travis.yml +24 -23
- data/LEGAL +13 -0
- data/README.rdoc +1 -0
- data/Rakefile +3 -0
- data/app/assets/javascripts/application.js +1 -1
- data/app/assets/javascripts/editor.js.coffee +60 -15
- data/app/assets/stylesheets/application.css +1 -2
- data/app/assets/stylesheets/flatstrap-custom.css.scss +2 -0
- data/app/controllers/editor_controller.rb +0 -24
- data/app/controllers/source_codes_controller.rb +67 -0
- data/app/models/source_code.rb +42 -0
- data/app/views/editor/index.html.erb +5 -3
- data/bin/smalruby-editor +11 -0
- data/config/application.rb +8 -20
- data/config/boot.rb +3 -0
- data/config/environments/development.rb +2 -1
- data/config/environments/production.rb +12 -6
- data/config/environments/standalone.rb +3 -2
- data/config/environments/test.rb +14 -4
- data/config/initializers/backtrace_silencers.rb +4 -2
- data/config/initializers/session_store.rb +2 -1
- data/config/initializers/wrap_parameters.rb +2 -1
- data/config/routes.rb +10 -6
- data/config/unicorn.rb +7 -6
- data/db/migrate/20131216121603_create_source_codes.rb +9 -0
- data/db/migrate/20131219045113_add_filename_to_source_code.rb +5 -0
- data/db/schema.rb +8 -1
- data/lib/smalruby_editor.rb +29 -15
- data/lib/smalruby_editor/version.rb +1 -1
- data/lib/tasks/rspec.rake +2 -2
- data/lib/tasks/rubocop.rake +3 -0
- data/public/fonts/FontAwesome.otf +0 -0
- data/public/fonts/fontawesome-webfont.eot +0 -0
- data/public/fonts/fontawesome-webfont.ttf +0 -0
- data/public/fonts/fontawesome-webfont.woff +0 -0
- data/smalruby-editor.gemspec +3 -3
- data/spec/acceptance/readme.md +3 -0
- data/spec/acceptance/text_editor/base.feature +24 -0
- data/spec/acceptance/text_editor/check.feature +20 -0
- data/spec/acceptance/text_editor/load.feature +74 -0
- data/spec/acceptance/text_editor/save.feature +31 -0
- data/spec/controllers/editor_controller_spec.rb +2 -63
- data/spec/controllers/source_codes_controller_spec.rb +296 -0
- data/spec/models/source_code_spec.rb +44 -0
- data/spec/spec_helper.rb +123 -65
- data/spec/steps/ace_steps.rb +60 -0
- data/spec/steps/global_variable.rb +39 -0
- data/spec/steps/text_editor_steps.rb +160 -0
- data/spec/support/capybara.rb +17 -0
- metadata +49 -19
- data/spec/acceptance/editor.feature +0 -68
- 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.
|
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-
|
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.
|
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.
|
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: '
|
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: '
|
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:
|
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:
|
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/
|
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/
|
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-
|
311
|
-
- public/assets/application-
|
312
|
-
- public/assets/application-
|
313
|
-
- public/assets/application-
|
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-
|
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/
|
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/
|
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のプログラムではありません" を含む
|
data/spec/steps/editor_steps.rb
DELETED
@@ -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
|