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
@@ -1,28 +1,16 @@
1
1
  require File.expand_path('../boot', __FILE__)
2
2
 
3
- # Pick the frameworks you want:
4
- require "active_record/railtie"
5
- require "action_controller/railtie"
6
- require "action_mailer/railtie"
7
- require "sprockets/railtie"
8
- # require "rails/test_unit/railtie"
3
+ require 'active_record/railtie'
4
+ require 'action_controller/railtie'
5
+ require 'action_mailer/railtie'
6
+ require 'sprockets/railtie'
9
7
 
10
- # Require the gems listed in Gemfile, including any gems
11
- # you've limited to :test, :development, or :production.
12
- Bundler.require(:default, Rails.env) if Rails.env != 'standalone'
8
+ Bundler.require(:default, Rails.env) unless Rails.env == 'standalone'
13
9
 
14
10
  module SmalrubyEditor
15
11
  class Application < Rails::Application
16
- # Settings in config/environments/* take precedence over those specified here.
17
- # Application configuration should go into files in config/initializers
18
- # -- all .rb files in that directory are automatically loaded.
19
-
20
- # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
21
- # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
22
- # config.time_zone = 'Central Time (US & Canada)'
23
-
24
- # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
25
- # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
26
- # config.i18n.default_locale = :de
12
+ config.time_zone = 'Tokyo'
13
+ # config.i18n.default_locale = :ja
14
+ config.colorize_logging = false
27
15
  end
28
16
  end
data/config/boot.rb CHANGED
@@ -1,8 +1,11 @@
1
1
  # Set up gems listed in the Gemfile.
2
2
  if ENV['RAILS_ENV'] == 'standalone'
3
+ require 'pathname'
3
4
  path = Pathname('../../smalruby-editor.gemspec').expand_path(__FILE__)
4
5
  spec = Dir.chdir(path.dirname.to_s) {
6
+ # rubocop:disable Eval
5
7
  eval(path.read, TOPLEVEL_BINDING, path.to_s)
8
+ # rubocop:enable Eval
6
9
  }
7
10
  spec.runtime_dependencies.each do |spec_dep|
8
11
  require spec_dep.name
@@ -1,5 +1,6 @@
1
1
  SmalrubyEditor::Application.configure do
2
- # Settings specified here will take precedence over those in config/application.rb.
2
+ # Settings specified here will take precedence over those in
3
+ # config/application.rb.
3
4
 
4
5
  # In the development environment your application's code is reloaded on
5
6
  # every request. This slows down response time but is perfect for development
@@ -1,5 +1,6 @@
1
1
  SmalrubyEditor::Application.configure do
2
- # Settings specified here will take precedence over those in config/application.rb.
2
+ # Settings specified here will take precedence over those in
3
+ # config/application.rb.
3
4
 
4
5
  # Code is not reloaded between requests.
5
6
  config.cache_classes = true
@@ -16,7 +17,8 @@ SmalrubyEditor::Application.configure do
16
17
 
17
18
  # Enable Rack::Cache to put a simple HTTP cache in front of your application
18
19
  # Add `rack-cache` to your Gemfile before enabling this.
19
- # For large-scale production use, consider using a caching reverse proxy like nginx, varnish or squid.
20
+ # For large-scale production use, consider using a caching reverse
21
+ # proxy like nginx, varnish or squid.
20
22
  # config.action_dispatch.rack_cache = true
21
23
 
22
24
  # Disable Rails's static asset server (Apache or nginx will already do this).
@@ -39,7 +41,8 @@ SmalrubyEditor::Application.configure do
39
41
  # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
40
42
  # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
41
43
 
42
- # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
44
+ # Force all access to the app over SSL, use
45
+ # Strict-Transport-Security, and use secure cookies.
43
46
  # config.force_ssl = true
44
47
 
45
48
  # Set to :debug to see everything in the log.
@@ -54,15 +57,18 @@ SmalrubyEditor::Application.configure do
54
57
  # Use a different cache store in production.
55
58
  # config.cache_store = :mem_cache_store
56
59
 
57
- # Enable serving of images, stylesheets, and JavaScripts from an asset server.
60
+ # Enable serving of images, stylesheets, and JavaScripts from an
61
+ # asset server.
58
62
  # config.action_controller.asset_host = "http://assets.example.com"
59
63
 
60
64
  # Precompile additional assets.
61
- # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
65
+ # application.js, application.css, and all non-JS/CSS in app/assets
66
+ # folder are already added.
62
67
  # config.assets.precompile += %w( search.js )
63
68
 
64
69
  # Ignore bad email addresses and do not raise email delivery errors.
65
- # Set this to true and configure the email server for immediate delivery to raise delivery errors.
70
+ # Set this to true and configure the email server for immediate
71
+ # delivery to raise delivery errors.
66
72
  # config.action_mailer.raise_delivery_errors = false
67
73
 
68
74
  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
@@ -1,13 +1,14 @@
1
1
  require_relative 'production'
2
2
 
3
3
  SmalrubyEditor::Application.configure do
4
- if !ENV['SMALRUBY_EDITOR_HOME']
4
+ unless ENV['SMALRUBY_EDITOR_HOME']
5
5
  fail 'you must set SMALRUBY_EDITOR_HOME environment variable.'
6
6
  end
7
7
 
8
8
  home_dir = SmalrubyEditor.create_home_directory
9
9
 
10
- config.paths.add 'config/database', with: home_dir.join('config/database.yml')
10
+ config.paths.add 'config/database',
11
+ with: home_dir.join('config/database.yml')
11
12
  config.paths.add 'log', with: home_dir.join("log/#{Rails.env}.log")
12
13
  config.paths.add 'tmp', with: home_dir.join('tmp')
13
14
  config.paths.add 'tmp/cache', with: home_dir.join('tmp/cache')
@@ -1,20 +1,30 @@
1
+ # -*- coding: utf-8 -*-
1
2
  SmalrubyEditor::Application.configure do
2
- # Settings specified here will take precedence over those in config/application.rb.
3
+ # Settings specified here will take precedence over those in
4
+ # config/application.rb.
3
5
 
4
6
  # The test environment is used exclusively to run your application's
5
7
  # test suite. You never need to work with it otherwise. Remember that
6
8
  # your test database is "scratch space" for the test suite and is wiped
7
9
  # and recreated between test runs. Don't rely on the data there!
8
- config.cache_classes = true
10
+
11
+ # http://penguinlab.jp/blog/post/2256# より
12
+ # Spork 使用時はクラスをキャッシュしない
13
+ if defined?(Spork) && Spork.using_spork?
14
+ config.cache_classes = false
15
+ else
16
+ config.cache_classes = true
17
+ end
9
18
 
10
19
  # Do not eager load code on boot. This avoids loading your whole application
11
20
  # just for the purpose of running a single test. If you are using a tool that
12
21
  # preloads Rails for running tests, you may have to set it to true.
13
22
  config.eager_load = false
14
23
 
15
- # Configure static asset server for tests with Cache-Control for performance.
24
+ # Configure static asset server for tests with Cache-Control for
25
+ # performance.
16
26
  config.serve_static_assets = true
17
- config.static_cache_control = "public, max-age=3600"
27
+ config.static_cache_control = 'public, max-age=3600'
18
28
 
19
29
  # Show full error reports and disable caching.
20
30
  config.consider_all_requests_local = true
@@ -1,7 +1,9 @@
1
1
  # Be sure to restart your server when you modify this file.
2
2
 
3
- # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
3
+ # You can add backtrace silencers for libraries that you're using but
4
+ # don't wish to see in your backtraces.
4
5
  # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
5
6
 
6
- # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
7
+ # You can also remove all the silencers if you're trying to debug a
8
+ # problem that might stem from framework code.
7
9
  # Rails.backtrace_cleaner.remove_silencers!
@@ -1,3 +1,4 @@
1
1
  # Be sure to restart your server when you modify this file.
2
2
 
3
- SmalrubyEditor::Application.config.session_store :cookie_store, key: '_smalruby-editor_session'
3
+ SmalrubyEditor::Application
4
+ .config.session_store :cookie_store, key: '_smalruby-editor_session'
@@ -3,7 +3,8 @@
3
3
  # This file contains settings for ActionController::ParamsWrapper which
4
4
  # is enabled by default.
5
5
 
6
- # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
6
+ # Enable parameter wrapping for JSON. You can disable this by setting
7
+ # :format to an empty array.
7
8
  ActiveSupport.on_load(:action_controller) do
8
9
  wrap_parameters format: [:json] if respond_to?(:wrap_parameters)
9
10
  end
data/config/routes.rb CHANGED
@@ -2,11 +2,13 @@
2
2
  SmalrubyEditor::Application.routes.draw do
3
3
  root 'editor#index'
4
4
 
5
- # FIXME: POSTメソッドに変更する
6
- get "editor/save_file"
7
- post "editor/load_file"
5
+ resources :source_codes, only: [:create]
6
+ post 'source_codes/check'
7
+ delete 'source_codes/download'
8
+ post 'source_codes/load'
8
9
 
9
- # The priority is based upon order of creation: first created -> highest priority.
10
+ # The priority is based upon order of creation: first created ->
11
+ # highest priority.
10
12
  # See how all your routes lay out with "rake routes".
11
13
 
12
14
  # You can have the root of your site routed with "root"
@@ -15,10 +17,12 @@ SmalrubyEditor::Application.routes.draw do
15
17
  # Example of regular route:
16
18
  # get 'products/:id' => 'catalog#view'
17
19
 
18
- # Example of named route that can be invoked with purchase_url(id: product.id)
20
+ # Example of named route that can be invoked with purchase_url(id:
21
+ # product.id)
19
22
  # get 'products/:id/purchase' => 'catalog#purchase', as: :purchase
20
23
 
21
- # Example resource route (maps HTTP verbs to controller actions automatically):
24
+ # Example resource route (maps HTTP verbs to controller actions
25
+ # automatically):
22
26
  # resources :products
23
27
 
24
28
  # Example resource route with options:
data/config/unicorn.rb CHANGED
@@ -1,22 +1,23 @@
1
- worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3)
1
+ worker_processes Integer(ENV['WEB_CONCURRENCY'] || 3)
2
2
  timeout 15
3
3
  preload_app true
4
4
 
5
+ # rubocop:disable Output
5
6
  before_fork do |server, worker|
6
7
  Signal.trap 'TERM' do
7
8
  puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
8
9
  Process.kill 'QUIT', Process.pid
9
10
  end
10
11
 
11
- defined?(ActiveRecord::Base) and
12
- ActiveRecord::Base.connection.disconnect!
12
+ defined?(ActiveRecord::Base) && ActiveRecord::Base.connection.disconnect!
13
13
  end
14
14
 
15
15
  after_fork do |server, worker|
16
16
  Signal.trap 'TERM' do
17
- puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
17
+ puts 'Unicorn worker intercepting TERM and doing nothing.' \
18
+ ' Wait for master to send QUIT'
18
19
  end
19
20
 
20
- defined?(ActiveRecord::Base) and
21
- ActiveRecord::Base.establish_connection
21
+ defined?(ActiveRecord::Base) && ActiveRecord::Base.establish_connection
22
22
  end
23
+ # rubocop:enable Output
@@ -0,0 +1,9 @@
1
+ class CreateSourceCodes < ActiveRecord::Migration
2
+ def change
3
+ create_table :source_codes do |t|
4
+ t.text :data
5
+
6
+ t.timestamps
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ class AddFilenameToSourceCode < ActiveRecord::Migration
2
+ def change
3
+ add_column :source_codes, :filename, :string
4
+ end
5
+ end
data/db/schema.rb CHANGED
@@ -11,6 +11,13 @@
11
11
  #
12
12
  # It's strongly recommended that you check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(version: 0) do
14
+ ActiveRecord::Schema.define(version: 20131219045113) do
15
+
16
+ create_table "source_codes", force: true do |t|
17
+ t.text "data"
18
+ t.datetime "created_at"
19
+ t.datetime "updated_at"
20
+ t.string "filename"
21
+ end
15
22
 
16
23
  end
@@ -3,30 +3,44 @@ require 'smalruby_editor/version'
3
3
  module SmalrubyEditor
4
4
  def create_home_directory(home_dir = nil)
5
5
  if home_dir.blank?
6
- home_dir = Pathname(ENV['SMALRUBY_EDITOR_HOME'] || '~/.smalruby-editor').expand_path
6
+ path = ENV['SMALRUBY_EDITOR_HOME'] || '~/.smalruby-editor'
7
+ home_dir = Pathname(path).expand_path
7
8
  end
9
+ create_under_home_directories(home_dir)
10
+ create_database_yml(home_dir)
11
+ home_dir
12
+ end
13
+ module_function :create_home_directory
8
14
 
9
- %w(log db config tmp/cache tmp/pids tmp/sessions tmp/sockets).map { |s|
10
- home_dir.join(s)
11
- }.each do |dir|
12
- FileUtils.mkdir_p(dir)
15
+ class << self
16
+ private
17
+
18
+ def create_under_home_directories(home_dir)
19
+ dirs = %w(log db config
20
+ tmp/cache tmp/pids tmp/sessions tmp/sockets).map { |s|
21
+ home_dir.join(s)
22
+ }
23
+ dirs.each do |dir|
24
+ FileUtils.mkdir_p(dir)
25
+ end
13
26
  end
14
27
 
15
- database_yml_path = home_dir.join('config', 'database.yml')
16
- db_path = home_dir.join('db', 'standalone.sqlite3')
17
- if !File.exist?(database_yml_path)
18
- File.open(database_yml_path, 'w') do |f|
19
- f.write(<<-EOS)
28
+ DATABASE_YML_TEMPLATE = <<-EOS
20
29
  standalone:
21
30
  adapter: sqlite3
22
- database: #{db_path}
31
+ database: %db_path%
23
32
  pool: 5
24
33
  timeout: 5000
25
- EOS
34
+ EOS
35
+
36
+ def create_database_yml(home_dir)
37
+ database_yml_path = home_dir.join('config', 'database.yml')
38
+ db_path = home_dir.join('db', 'standalone.sqlite3')
39
+ unless File.exist?(database_yml_path)
40
+ File.open(database_yml_path, 'w') do |f|
41
+ f.write(DATABASE_YML_TEMPLATE.gsub(/%db_path%/, db_path.to_s))
42
+ end
26
43
  end
27
44
  end
28
-
29
- home_dir
30
45
  end
31
- module_function :create_home_directory
32
46
  end
@@ -1,3 +1,3 @@
1
1
  module SmalrubyEditor
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.6'
3
3
  end
data/lib/tasks/rspec.rake CHANGED
@@ -3,13 +3,13 @@ begin
3
3
  task(:spec).clear
4
4
  desc "Run all specs/features in spec directory"
5
5
  RSpec::Core::RakeTask.new(:spec => 'db:test:prepare') do |t|
6
- t.pattern = './spec{,/*/**}*{_spec.rb,.feature}'
6
+ t.pattern = './spec/{,**/}*{_spec.rb,.feature}'
7
7
  end
8
8
 
9
9
  namespace :spec do
10
10
  desc "Run the code examples in spec/acceptance"
11
11
  RSpec::Core::RakeTask.new(:acceptance => 'db:test:prepare') do |t|
12
- t.pattern = './spec/acceptance/{,/*/**}*{_spec.rb,.feature}'
12
+ t.pattern = './spec/acceptance/{,**/}*.feature'
13
13
  end
14
14
  end
15
15
  end
@@ -0,0 +1,3 @@
1
+ task :rubocop do
2
+ sh 'bundle exec rubocop --rails app lib bin config'
3
+ end
Binary file
@@ -29,18 +29,18 @@ Gem::Specification.new do |spec|
29
29
 
30
30
  runtime_dependencies =
31
31
  [
32
- ['rails', '~> 4.0.0'],
32
+ ['rails', '4.0.2'],
33
33
  ['sqlite3'],
34
34
  ['sass-rails', '~> 4.0.0'],
35
35
  ['uglifier', '>= 1.3.0'],
36
36
  ['coffee-rails', '~> 4.0.0'],
37
37
  ['jquery-rails'],
38
38
  ['turbolinks'],
39
- ['jbuilder', '~> 1.2'],
39
+ ['jbuilder', '~> 2.0'],
40
40
  ['ace-rails-ap'],
41
41
  ['flatstrap-sass'],
42
- ['font-awesome-rails'],
43
42
  ['jquery-fileupload-rails'],
43
+ ['shared-mime-info'],
44
44
  ['launchy'],
45
45
  ]
46
46
  runtime_dependencies.each do |args|
@@ -0,0 +1,3 @@
1
+ smalruby-editorはRubyのプログラムを作成するためのビジュアルエディタです。 [Scratch](http://scratch.mit.edu/) のようにブロックを使ってプログラムを作成できます。それだけではなく、直接入力してプログラムを作成することもできます。
2
+
3
+ 詳しくは https://github.com/smalruby/smalruby-editor をご覧ください。
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: Base - 基本
5
+ シナリオ: トップページにアクセスしてエディタ画面を表示する
6
+ もし "トップページ" にアクセスする
7
+
8
+ ならば "Rubyタブ" が表示されていること
9
+ かつ "テキストエディタ" が表示されていること
10
+ かつ "プログラム名の入力欄" が表示されていること
11
+ かつ "セーブボタン" が表示されていること
12
+ かつ テキストエディタにフォーカスがあること
13
+ かつ テキストエディタの 0 行目の 0 文字目にカーソルがあること
14
+
15
+ シナリオ: プログラムを入力後にページを遷移する
16
+ 前提 "エディタ" 画面を表示する
17
+ かつ テキストエディタに "puts 'Hello, World!'" を入力済みである
18
+ かつ プログラムの名前に "01.rb" を指定する
19
+
20
+ もし ページをリロードする
21
+ かつ 警告ダイアログの "dismiss" ボタンをクリックする
22
+
23
+ ならば テキストエディタのプログラムは "puts 'Hello, World!'" であること
24
+ かつ "プログラム名の入力欄" は "01.rb" であること