tamashii 0.3.6 → 0.4.0
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 +4 -4
- data/.travis.yml +6 -0
- data/README.md +86 -14
- data/lib/tamashii/server.rb +6 -1
- data/lib/tamashii/server/config.rb +4 -4
- data/lib/tamashii/version.rb +1 -1
- data/tamashii.gemspec +9 -8
- metadata +46 -33
- data/lib/tamashii/configurable.rb +0 -45
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 8ed79e176bb8b330675dcc17af8432771df1701b
         | 
| 4 | 
            +
              data.tar.gz: 111bcf61a0685a6dba7c31146bf0ceb6a5582d6b
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 54c52fe0e4afaea67fc83c1cf6a9105457f6126f3a3ceaeabf730d1e50fb4a91a399afbeb8969658e994a067239bdc562b4539bdb4e7a7b43c45c1c8cc2cb9f9
         | 
| 7 | 
            +
              data.tar.gz: 0b76ec9201d43b852afeca20faf1ae02651f774d2c481de52849cc95118c8d311e4a5908a9433ccb36005684886148832b8513c078b6c12851e96a4b87d0912f
         | 
    
        data/.travis.yml
    CHANGED
    
    | @@ -3,3 +3,9 @@ cache: bundler | |
| 3 3 | 
             
            language: ruby
         | 
| 4 4 | 
             
            rvm:
         | 
| 5 5 | 
             
              - 2.4.1
         | 
| 6 | 
            +
            before_script:
         | 
| 7 | 
            +
              - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
         | 
| 8 | 
            +
              - chmod +x ./cc-test-reporter
         | 
| 9 | 
            +
              - ./cc-test-reporter before-build
         | 
| 10 | 
            +
            after_script:
         | 
| 11 | 
            +
              - if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT; fi
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,38 +1,110 @@ | |
| 1 | 
            -
            Tamashii [](https://badge.fury.io/rb/tamashii) [](https://badge.fury.io/rb/tamashii) [](https://travis-ci.org/tamashii-io/tamashii) [](https://codeclimate.com/github/tamashii-io/tamashii/coverage) [](https://codeclimate.com/github/tamashii-io/tamashii)
         | 
| 2 2 | 
             
            ===
         | 
| 3 3 |  | 
| 4 | 
            +
            Tamashii is a package designed for IoT. You can write the WebSocket server and client easily by using this gem.
         | 
| 4 5 |  | 
| 5 | 
            -
            Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/tamashii`. To experiment with that code, run `bin/console` for an interactive prompt.
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            TODO: Delete this and the text above, and describe your gem
         | 
| 8 6 |  | 
| 9 7 | 
             
            ## Installation
         | 
| 10 8 |  | 
| 11 | 
            -
            Add  | 
| 9 | 
            +
            Add the following code to your `Gemfile`
         | 
| 12 10 |  | 
| 13 11 | 
             
            ```ruby
         | 
| 14 12 | 
             
            gem 'tamashii'
         | 
| 15 13 | 
             
            ```
         | 
| 16 14 |  | 
| 17 15 | 
             
            And then execute:
         | 
| 16 | 
            +
            ```ruby
         | 
| 17 | 
            +
            $ bundle install
         | 
| 18 | 
            +
            ```
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            Or install it yourself with:
         | 
| 21 | 
            +
            ```ruby
         | 
| 22 | 
            +
            $ gem install tamashii
         | 
| 23 | 
            +
            ```
         | 
| 18 24 |  | 
| 19 | 
            -
             | 
| 25 | 
            +
            ## Usage
         | 
| 20 26 |  | 
| 21 | 
            -
             | 
| 27 | 
            +
            There are two section in Tamashii, Server and Client, is responsible for the WebSocket server and client, respectively.
         | 
| 22 28 |  | 
| 23 | 
            -
             | 
| 29 | 
            +
            ### Server
         | 
| 24 30 |  | 
| 25 | 
            -
             | 
| 31 | 
            +
            Server section is a server designed based on Rack, it can not only be easily compatible with the web server, such as Puma, Passenger, but also be used as a module in the Rails and other projects.
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            To start the server, generate `config.ru` and add the following code to it.
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            ```ruby
         | 
| 36 | 
            +
            require 'tamashii/server'
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            run Tamashii::Server::Base.new
         | 
| 39 | 
            +
            ```
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            Then, you can start the server with:
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                $ rackup
         | 
| 44 | 
            +
            If you want to start the server with other web server, such as Puma:
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                $ puma
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            > You can refer to the project in [tamashii-manager](https://github.com/5xRuby/tamashii-manager) in the IoT server application.
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            #### Connection
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            In Tamashii, we only need to focus on how to connect with WebSocket users to exchange information, on the process of multi-process web server problems have been resolved in Tamashii.
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            We can create a `Client` object to handle the behavior of each user.
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            ```ruby
         | 
| 57 | 
            +
            Tamashii::Server.config do |config|
         | 
| 58 | 
            +
              config.connection_class = Client
         | 
| 59 | 
            +
            end
         | 
| 60 | 
            +
            ```
         | 
| 61 | 
            +
             | 
| 62 | 
            +
            In `Client` , there are four events that need to be handled.
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            * `on_open` : when the user is connected to the server
         | 
| 65 | 
            +
            * `on_message` : when the server receives the message from user
         | 
| 66 | 
            +
            * `on_error` : when the server gets an error
         | 
| 67 | 
            +
            * `on_close` : when the connection is shut down
         | 
| 68 | 
            +
             | 
| 69 | 
            +
            In most cases, we only need to deal with parts of `on_message` , the other events can be handled as needed.
         | 
| 70 | 
            +
             | 
| 71 | 
            +
            ```ruby
         | 
| 72 | 
            +
            class Client
         | 
| 73 | 
            +
              def on_message(data)
         | 
| 74 | 
            +
                # Processing for the received Data (Binary)
         | 
| 75 | 
            +
              end
         | 
| 76 | 
            +
            end
         | 
| 77 | 
            +
            ```
         | 
| 78 | 
            +
             | 
| 79 | 
            +
            By default Tamashii will broadcast the received message to other clients automatically.
         | 
| 80 | 
            +
             | 
| 81 | 
            +
             | 
| 82 | 
            +
            ### Client
         | 
| 83 | 
            +
             | 
| 84 | 
            +
            The client is in another repository: [tamashii-client](https://github.com/tamashii-io/tamashii-client)
         | 
| 26 85 |  | 
| 27 | 
            -
            TODO: Write usage instructions here
         | 
| 28 86 |  | 
| 29 87 | 
             
            ## Development
         | 
| 30 88 |  | 
| 31 | 
            -
             | 
| 89 | 
            +
            To get the source code
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                $ git clone git@github.com:tamashii-io/tamashii.git
         | 
| 92 | 
            +
             | 
| 93 | 
            +
            Initialize the development environment
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                $ ./bin/setup
         | 
| 96 | 
            +
             | 
| 97 | 
            +
            Run the spec
         | 
| 98 | 
            +
             | 
| 99 | 
            +
                $ rspec
         | 
| 100 | 
            +
             | 
| 101 | 
            +
            Installation the version of development on localhost
         | 
| 102 | 
            +
             | 
| 103 | 
            +
                $ bundle exec rake install
         | 
| 32 104 |  | 
| 33 | 
            -
             | 
| 105 | 
            +
            ## Contribution
         | 
| 34 106 |  | 
| 35 | 
            -
             | 
| 107 | 
            +
            Please report to us on [GitHub](https://github.com/tamashii-io/tamashii) if there is any bug or suggested modified.
         | 
| 36 108 |  | 
| 37 | 
            -
             | 
| 109 | 
            +
            The project was developed by [5xruby Inc.](https://5xruby.tw/)
         | 
| 38 110 |  | 
    
        data/lib/tamashii/server.rb
    CHANGED
    
    | @@ -6,10 +6,11 @@ require 'logger/colors' | |
| 6 6 | 
             
            require 'websocket/driver'
         | 
| 7 7 | 
             
            require 'rack'
         | 
| 8 8 | 
             
            require 'nio'
         | 
| 9 | 
            -
            require 'thread'
         | 
| 10 9 | 
             
            require 'concurrent'
         | 
| 11 10 | 
             
            require 'redis'
         | 
| 12 11 |  | 
| 12 | 
            +
            require 'tamashii/hookable'
         | 
| 13 | 
            +
             | 
| 13 14 | 
             
            module Tamashii
         | 
| 14 15 | 
             
              # :nodoc:
         | 
| 15 16 | 
             
              module Server
         | 
| @@ -33,3 +34,7 @@ module Tamashii | |
| 33 34 | 
             
                end
         | 
| 34 35 | 
             
              end
         | 
| 35 36 | 
             
            end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            Tamashii::Hook.after(:config) do |config|
         | 
| 39 | 
            +
              config.register(:server, Tamashii::Server.config)
         | 
| 40 | 
            +
            end
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            -
            require 'tamashii/ | 
| 3 | 
            +
            require 'tamashii/config'
         | 
| 4 4 |  | 
| 5 5 | 
             
            module Tamashii
         | 
| 6 6 | 
             
              module Server
         | 
| @@ -8,9 +8,9 @@ module Tamashii | |
| 8 8 | 
             
                class Config
         | 
| 9 9 | 
             
                  include Tamashii::Configurable
         | 
| 10 10 |  | 
| 11 | 
            -
                   | 
| 12 | 
            -
                   | 
| 13 | 
            -
                   | 
| 11 | 
            +
                  config :connection_class, default: Connection::Base
         | 
| 12 | 
            +
                  config :pubsub_class, default: Subscription::Redis
         | 
| 13 | 
            +
                  config :log_path, default: STDOUT
         | 
| 14 14 | 
             
                end
         | 
| 15 15 | 
             
              end
         | 
| 16 16 | 
             
            end
         | 
    
        data/lib/tamashii/version.rb
    CHANGED
    
    
    
        data/tamashii.gemspec
    CHANGED
    
    | @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            #  | 
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 3 | 
             
            lib = File.expand_path('../lib', __FILE__)
         | 
| 4 4 | 
             
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| @@ -31,19 +31,20 @@ Gem::Specification.new do |spec| | |
| 31 31 | 
             
              spec.require_paths = ['lib']
         | 
| 32 32 |  | 
| 33 33 | 
             
              spec.add_runtime_dependency "concurrent-ruby"
         | 
| 34 | 
            +
              spec.add_runtime_dependency "logger-colors"
         | 
| 35 | 
            +
              spec.add_runtime_dependency "nio4r"
         | 
| 34 36 | 
             
              spec.add_runtime_dependency "rack"
         | 
| 37 | 
            +
              spec.add_runtime_dependency "redis"
         | 
| 35 38 | 
             
              spec.add_runtime_dependency "tamashii-common"
         | 
| 39 | 
            +
              spec.add_runtime_dependency "tamashii-config"
         | 
| 40 | 
            +
              spec.add_runtime_dependency "tamashii-hookable"
         | 
| 36 41 | 
             
              spec.add_runtime_dependency "websocket-driver"
         | 
| 37 | 
            -
              spec.add_runtime_dependency "nio4r"
         | 
| 38 | 
            -
              spec.add_runtime_dependency "redis"
         | 
| 39 | 
            -
              spec.add_runtime_dependency "logger-colors"
         | 
| 40 42 |  | 
| 41 43 | 
             
              spec.add_development_dependency 'bundler', '~> 1.14'
         | 
| 44 | 
            +
              spec.add_development_dependency "codeclimate-test-reporter"
         | 
| 45 | 
            +
              spec.add_development_dependency "guard-rspec"
         | 
| 46 | 
            +
              spec.add_development_dependency "rack-test"
         | 
| 42 47 | 
             
              spec.add_development_dependency 'rake', '~> 10.0'
         | 
| 43 48 | 
             
              spec.add_development_dependency 'rspec', '~> 3.0'
         | 
| 44 | 
            -
              spec.add_development_dependency "rack-test"
         | 
| 45 49 | 
             
              spec.add_development_dependency "simplecov"
         | 
| 46 | 
            -
              spec.add_development_dependency "guard"
         | 
| 47 | 
            -
              spec.add_development_dependency "guard-rspec"
         | 
| 48 | 
            -
              spec.add_development_dependency "codeclimate-test-reporter"
         | 
| 49 50 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: tamashii
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.4.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - 蒼時弦也
         | 
| @@ -10,7 +10,7 @@ authors: | |
| 10 10 | 
             
            autorequire: 
         | 
| 11 11 | 
             
            bindir: exe
         | 
| 12 12 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date: 2017- | 
| 13 | 
            +
            date: 2017-11-20 00:00:00.000000000 Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: concurrent-ruby
         | 
| @@ -27,7 +27,7 @@ dependencies: | |
| 27 27 | 
             
                  - !ruby/object:Gem::Version
         | 
| 28 28 | 
             
                    version: '0'
         | 
| 29 29 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 30 | 
            -
              name:  | 
| 30 | 
            +
              name: logger-colors
         | 
| 31 31 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 32 32 | 
             
                requirements:
         | 
| 33 33 | 
             
                - - ">="
         | 
| @@ -41,7 +41,7 @@ dependencies: | |
| 41 41 | 
             
                  - !ruby/object:Gem::Version
         | 
| 42 42 | 
             
                    version: '0'
         | 
| 43 43 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 44 | 
            -
              name:  | 
| 44 | 
            +
              name: nio4r
         | 
| 45 45 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 46 46 | 
             
                requirements:
         | 
| 47 47 | 
             
                - - ">="
         | 
| @@ -55,7 +55,7 @@ dependencies: | |
| 55 55 | 
             
                  - !ruby/object:Gem::Version
         | 
| 56 56 | 
             
                    version: '0'
         | 
| 57 57 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 58 | 
            -
              name:  | 
| 58 | 
            +
              name: rack
         | 
| 59 59 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 60 60 | 
             
                requirements:
         | 
| 61 61 | 
             
                - - ">="
         | 
| @@ -69,7 +69,7 @@ dependencies: | |
| 69 69 | 
             
                  - !ruby/object:Gem::Version
         | 
| 70 70 | 
             
                    version: '0'
         | 
| 71 71 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 72 | 
            -
              name:  | 
| 72 | 
            +
              name: redis
         | 
| 73 73 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 74 74 | 
             
                requirements:
         | 
| 75 75 | 
             
                - - ">="
         | 
| @@ -83,7 +83,7 @@ dependencies: | |
| 83 83 | 
             
                  - !ruby/object:Gem::Version
         | 
| 84 84 | 
             
                    version: '0'
         | 
| 85 85 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 86 | 
            -
              name:  | 
| 86 | 
            +
              name: tamashii-common
         | 
| 87 87 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 88 88 | 
             
                requirements:
         | 
| 89 89 | 
             
                - - ">="
         | 
| @@ -97,7 +97,7 @@ dependencies: | |
| 97 97 | 
             
                  - !ruby/object:Gem::Version
         | 
| 98 98 | 
             
                    version: '0'
         | 
| 99 99 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 100 | 
            -
              name:  | 
| 100 | 
            +
              name: tamashii-config
         | 
| 101 101 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 102 102 | 
             
                requirements:
         | 
| 103 103 | 
             
                - - ">="
         | 
| @@ -111,49 +111,49 @@ dependencies: | |
| 111 111 | 
             
                  - !ruby/object:Gem::Version
         | 
| 112 112 | 
             
                    version: '0'
         | 
| 113 113 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 114 | 
            -
              name:  | 
| 114 | 
            +
              name: tamashii-hookable
         | 
| 115 115 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 116 116 | 
             
                requirements:
         | 
| 117 | 
            -
                - - " | 
| 117 | 
            +
                - - ">="
         | 
| 118 118 | 
             
                  - !ruby/object:Gem::Version
         | 
| 119 | 
            -
                    version: ' | 
| 120 | 
            -
              type: : | 
| 119 | 
            +
                    version: '0'
         | 
| 120 | 
            +
              type: :runtime
         | 
| 121 121 | 
             
              prerelease: false
         | 
| 122 122 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 123 123 | 
             
                requirements:
         | 
| 124 | 
            -
                - - " | 
| 124 | 
            +
                - - ">="
         | 
| 125 125 | 
             
                  - !ruby/object:Gem::Version
         | 
| 126 | 
            -
                    version: ' | 
| 126 | 
            +
                    version: '0'
         | 
| 127 127 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 128 | 
            -
              name:  | 
| 128 | 
            +
              name: websocket-driver
         | 
| 129 129 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 130 130 | 
             
                requirements:
         | 
| 131 | 
            -
                - - " | 
| 131 | 
            +
                - - ">="
         | 
| 132 132 | 
             
                  - !ruby/object:Gem::Version
         | 
| 133 | 
            -
                    version: ' | 
| 134 | 
            -
              type: : | 
| 133 | 
            +
                    version: '0'
         | 
| 134 | 
            +
              type: :runtime
         | 
| 135 135 | 
             
              prerelease: false
         | 
| 136 136 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 137 137 | 
             
                requirements:
         | 
| 138 | 
            -
                - - " | 
| 138 | 
            +
                - - ">="
         | 
| 139 139 | 
             
                  - !ruby/object:Gem::Version
         | 
| 140 | 
            -
                    version: ' | 
| 140 | 
            +
                    version: '0'
         | 
| 141 141 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 142 | 
            -
              name:  | 
| 142 | 
            +
              name: bundler
         | 
| 143 143 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 144 144 | 
             
                requirements:
         | 
| 145 145 | 
             
                - - "~>"
         | 
| 146 146 | 
             
                  - !ruby/object:Gem::Version
         | 
| 147 | 
            -
                    version: ' | 
| 147 | 
            +
                    version: '1.14'
         | 
| 148 148 | 
             
              type: :development
         | 
| 149 149 | 
             
              prerelease: false
         | 
| 150 150 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 151 151 | 
             
                requirements:
         | 
| 152 152 | 
             
                - - "~>"
         | 
| 153 153 | 
             
                  - !ruby/object:Gem::Version
         | 
| 154 | 
            -
                    version: ' | 
| 154 | 
            +
                    version: '1.14'
         | 
| 155 155 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 156 | 
            -
              name:  | 
| 156 | 
            +
              name: codeclimate-test-reporter
         | 
| 157 157 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 158 158 | 
             
                requirements:
         | 
| 159 159 | 
             
                - - ">="
         | 
| @@ -167,7 +167,7 @@ dependencies: | |
| 167 167 | 
             
                  - !ruby/object:Gem::Version
         | 
| 168 168 | 
             
                    version: '0'
         | 
| 169 169 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 170 | 
            -
              name:  | 
| 170 | 
            +
              name: guard-rspec
         | 
| 171 171 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 172 172 | 
             
                requirements:
         | 
| 173 173 | 
             
                - - ">="
         | 
| @@ -181,7 +181,7 @@ dependencies: | |
| 181 181 | 
             
                  - !ruby/object:Gem::Version
         | 
| 182 182 | 
             
                    version: '0'
         | 
| 183 183 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 184 | 
            -
              name:  | 
| 184 | 
            +
              name: rack-test
         | 
| 185 185 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 186 186 | 
             
                requirements:
         | 
| 187 187 | 
             
                - - ">="
         | 
| @@ -195,21 +195,35 @@ dependencies: | |
| 195 195 | 
             
                  - !ruby/object:Gem::Version
         | 
| 196 196 | 
             
                    version: '0'
         | 
| 197 197 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 198 | 
            -
              name:  | 
| 198 | 
            +
              name: rake
         | 
| 199 199 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 200 200 | 
             
                requirements:
         | 
| 201 | 
            -
                - - " | 
| 201 | 
            +
                - - "~>"
         | 
| 202 202 | 
             
                  - !ruby/object:Gem::Version
         | 
| 203 | 
            -
                    version: '0'
         | 
| 203 | 
            +
                    version: '10.0'
         | 
| 204 204 | 
             
              type: :development
         | 
| 205 205 | 
             
              prerelease: false
         | 
| 206 206 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 207 207 | 
             
                requirements:
         | 
| 208 | 
            -
                - - " | 
| 208 | 
            +
                - - "~>"
         | 
| 209 209 | 
             
                  - !ruby/object:Gem::Version
         | 
| 210 | 
            -
                    version: '0'
         | 
| 210 | 
            +
                    version: '10.0'
         | 
| 211 211 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 212 | 
            -
              name:  | 
| 212 | 
            +
              name: rspec
         | 
| 213 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 214 | 
            +
                requirements:
         | 
| 215 | 
            +
                - - "~>"
         | 
| 216 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 217 | 
            +
                    version: '3.0'
         | 
| 218 | 
            +
              type: :development
         | 
| 219 | 
            +
              prerelease: false
         | 
| 220 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 221 | 
            +
                requirements:
         | 
| 222 | 
            +
                - - "~>"
         | 
| 223 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 224 | 
            +
                    version: '3.0'
         | 
| 225 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 226 | 
            +
              name: simplecov
         | 
| 213 227 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 214 228 | 
             
                requirements:
         | 
| 215 229 | 
             
                - - ">="
         | 
| @@ -244,7 +258,6 @@ files: | |
| 244 258 | 
             
            - bin/console
         | 
| 245 259 | 
             
            - bin/setup
         | 
| 246 260 | 
             
            - lib/tamashii.rb
         | 
| 247 | 
            -
            - lib/tamashii/configurable.rb
         | 
| 248 261 | 
             
            - lib/tamashii/server.rb
         | 
| 249 262 | 
             
            - lib/tamashii/server/base.rb
         | 
| 250 263 | 
             
            - lib/tamashii/server/client.rb
         | 
| @@ -1,45 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module Tamashii
         | 
| 4 | 
            -
              # :nodoc:
         | 
| 5 | 
            -
              module Configurable
         | 
| 6 | 
            -
                # :nodoc:
         | 
| 7 | 
            -
                module ClassMethods
         | 
| 8 | 
            -
                  def register(key, default, &_block)
         | 
| 9 | 
            -
                    @defaults ||= {}
         | 
| 10 | 
            -
                    return @defaults[key.to_sym] = yield if block_given?
         | 
| 11 | 
            -
                    @defaults[key.to_sym] = default
         | 
| 12 | 
            -
                  end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                  def exist?(key)
         | 
| 15 | 
            -
                    @defaults.key?(key.to_sym) || @defaults.key?(key.to_s[0..-2].to_sym)
         | 
| 16 | 
            -
                  end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                  def default_value(key)
         | 
| 19 | 
            -
                    @defaults[key.to_sym]
         | 
| 20 | 
            -
                  end
         | 
| 21 | 
            -
                end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                def self.included(klass)
         | 
| 24 | 
            -
                  klass.extend ClassMethods
         | 
| 25 | 
            -
                end
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                def config(key, value = nil, &_block)
         | 
| 28 | 
            -
                  @configs ||= {}
         | 
| 29 | 
            -
                  return unless self.class.exist?(key)
         | 
| 30 | 
            -
                  return @configs[key.to_sym] || self.class.default_value(key) if value.nil?
         | 
| 31 | 
            -
                  return @configs[key.to_sym] = yield if block_given?
         | 
| 32 | 
            -
                  @configs[key.to_sym] = value
         | 
| 33 | 
            -
                end
         | 
| 34 | 
            -
             | 
| 35 | 
            -
                def respond_to_missing?(name, _all = false)
         | 
| 36 | 
            -
                  self.class.exist?(name)
         | 
| 37 | 
            -
                end
         | 
| 38 | 
            -
             | 
| 39 | 
            -
                def method_missing(name, *args, &block)
         | 
| 40 | 
            -
                  return super unless self.class.exist?(name)
         | 
| 41 | 
            -
                  return config(name.to_sym, nil, &block) unless name.to_s.end_with?('=')
         | 
| 42 | 
            -
                  config(name.to_s[0..-2].to_sym, args.first)
         | 
| 43 | 
            -
                end
         | 
| 44 | 
            -
              end
         | 
| 45 | 
            -
            end
         |