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で扱えて便利〜〜