Created
          September 10, 2022 07:36 
        
      - 
      
 - 
        
Save sugamasao/f19168b1ead700eabd04d126a13dfe4e to your computer and use it in GitHub Desktop.  
    dRubyで遊んでみよう
  
        
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | require 'drb/drb' | |
| require 'logger' | |
| require_relative './user' | |
| URL = 'druby://localhost:8787' | |
| server = DRbObject.new_with_uri(URL) | |
| logger = Logger.new(STDOUT) | |
| 3.times do | |
| logger.info "call server" | |
| user = server.fetch | |
| logger.info "user = #{user}, name = #{user.name}, created_at = #{user.created_at}" | |
| sleep 3 | |
| end | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | require 'drb/drb' | |
| require_relative './user' | |
| require 'logger' | |
| URL = 'druby://localhost:8787' | |
| class Server | |
| def initialize(logger) | |
| @logger = logger | |
| end | |
| def fetch | |
| logger.info "call fetch" | |
| name = %w(芹沢鴨 近藤勇 新見錦 斎藤一 土方歳三 大野右仲 相馬主計).sample | |
| ::User.new(name: name, created_at: Time.now) | |
| end | |
| def logger | |
| @logger | |
| end | |
| end | |
| logger = Logger.new(STDOUT) | |
| DRb.start_service(URL, Server.new(logger), :start_level => 1) | |
| logger.info "start server" | |
| DRb.thread.join | |
| logger.info "end server" | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | class User | |
| attr_reader :name, :created_at | |
| def initialize(name:, created_at:) | |
| @name = name | |
| @created_at = created_at | |
| end | |
| end | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment
  
            
ターミナルでserverを実行しつつ
別のターミナルでclientを動かす
そうすると、serverで生成されたオブジェクトがclientで扱えて便利〜〜