Ruby 初心者スレッド Part 67 (729レス)
上下前次1-新
45: (ワッチョイ ff2c-9hkR) 2021/01/11(月)11:30 ID:RwOnRvzI0(1) AAS
「ruby `require': cannot load such file -- Win32API」で検索!
46(1): (アウアウウー Saa3-zMe3) 2021/01/11(月)15:49 ID:NK5j5E+la(1) AAS
Win32APIはruby3.0から廃止
当然Win32APIを使ってたgemsはRuby3.0では作者がメンテナンスするまで動かないからneri作者の尻ひっぱたくか前のバージョン使え
47(1): (アメ MMe3-nOiR) 2021/01/11(月)15:52 ID:Yn+GwDZFM(1) AAS
さすがの互換性w
48: (ワッチョイ df01-zMe3) 2021/01/11(月)16:04 ID:KSKcxhht0(1) AAS
Windowsに嫌われてるとか言ってたな。
49: (ワッチョイ ff68-Q/Jp) 2021/01/11(月)21:15 ID:iHOPiDVy0(1) AAS
>>47
いや、さすがにWin32APIはしゃあない。
むしろ、とっくに避けていなければならんかったレベル。
50: (ササクッテロ Spb3-eSWr) 2021/01/11(月)22:59 ID:jE21Oyzwp(1) AAS
>>46
なるほど。ありがとうございます。
わからず、ずっと悩んでました。
51: (ワッチョイ e1da-A78j) 2021/01/21(木)04:05 ID:wRHR1dSL0(1) AAS
環境変数の設定を一切せず
rubyの起動オプションですべて明示するというやり方って
現実的になにかトラブルが発生したりしますか?
52: (ワッチョイ ae68-8Eyn) 2021/01/21(木)04:54 ID:GWoeC7/l0(1) AAS
コマンドラインの長さとか?
最近ならもうだいじょうぶかな?
53: (ワッチョイ 87da-Jq7D) 2021/01/22(金)08:44 ID:MPceXAls0(1) AAS
そんなに長い指定はないので今の所問題く動いているっぽいです
ありがとうございます
54(3): (ワッチョイ 5f06-jsk3) 2021/01/23(土)12:19 ID:joIGd+XG0(1) AAS
教えていただきたいのですが、rubyのclassでそのclassに存在するプロパティ一覧を取得する方法ありますか?
以下の様なクラスを作ってます。
class Data
def self.csv_header
return 'name,id,data1,data2'
end
attr_reader :name, :id, :data1, :data2
def initialize(name:, id:, data1:, data2)
@name = name
@id = id
省10
55: (オッペケ Sr7b-3C30) 2021/01/24(日)22:13 ID:kU4Polklr(1) AAS
>>54
hoge = Data.new('name', id: 0, data1: 1, data2: 2)
ivs = hoge.instance_variables
ivs.each{|iv| puts "%s => %p" % [iv, hoge.instance_variable_get(iv)]}
# =>
name => "name"
id => 0
data1 => 1
data2 => 2
56: (ワッチョイ 7f2c-8PYP) 2021/01/25(月)17:06 ID:+q31tGtg0(1) AAS
黒魔術・メタプログラミングで、よく見る
インスタンス変数用のinstance_variables、
クラス/モジュールには、クラス変数(@@these_things)用のclass_variables
57: (ワッチョイ 5f01-oRbG) 2021/01/25(月)18:43 ID:co/Rkwpa0(1/2) AAS
>>54
そういう用途はStruct使うといいんでない?
Foo = Struct.new("Foo", :name, :id, :data1, :data2)
foo = Foo.new("foo", 1, "123", "456")
foo.to_h.keys
#=> [:name, :id, :data1, :data2]
foo.to_h.keys.to_csv
#=> "name,id,data1,data2¥n"
58: (ワッチョイ 5f01-oRbG) 2021/01/25(月)18:47 ID:co/Rkwpa0(2/2) AAS
Structは初期化時の引数の数が一致してなくてもエラーにならずにnilがデフォルト値になる
それがいやな場合は継承してコンストラクタを上書き
class Bar < Struct.new("Bar", :name, :id, :data1, :data2)
def initialize(name, id, data1=nil, data2=nil)
super
end
end
59(2): (バットンキン MM7a-HhZe) 2021/01/29(金)04:39 ID:sK+sAxFfM(1/3) AAS
質問させてください。
以下のようなデータがあるとして。
data = {
"id": "price_xxxxxxx",
"object": "price",
"active": true,
"billing_scheme": "per_unit",
"created": 1234567,
"currency": "usd",
"metadata": {
省5
60: (バットンキン MM7a-HhZe) 2021/01/29(金)04:40 ID:sK+sAxFfM(2/3) AAS
>>59
すいません、4じゃなくて2でした。。
61(1): (ワッチョイ 2a01-I+PI) 2021/01/29(金)13:59 ID:IOP7xwlv0(1) AAS
普通にブラケットでアクセスするかdigしたほうがいい気がするが
どうしてもドットでアクセスしたいなら再帰的にOpenStructに変換する
data = JSON.parse(data.to_json, object_class: OpenStruct)
data.metadata.commission
#=> "2"
62(1): (ワッチョイ 662c-CS/l) 2021/01/29(金)14:31 ID:MVM9RsSY0(1) AAS
ハッシュだから、hash.x.xyz は無理だろ
Effective Ruby の項目10 に書いてある、
構造物はハッシュじゃなくて、クラス・Struct を使おうというやつだろ
ただ、その都度、構造が変わるものは、ハッシュの方が良いし、
構造がネストしている場合も難しい
require "json"
json = <<'JSON'
{ "a": "abc",
"x": {
"xyz": "2" }}
省3
63: (バットンキン MM7a-HhZe) 2021/01/29(金)14:57 ID:sK+sAxFfM(3/3) AAS
>>61 >>62
ありがとうございます。
背景を書いてませんでしたが、rspec で必要なデータなのです。。
後出しですいません。
なので data.metadata.commission で確認できることが必要なので、Struct(もしくはOpenStruct)で、変換させてみます。
64: (オッペケ Srbd-+Ul7) 2021/01/29(金)21:09 ID:/bfQuQp2r(1) AAS
>>59
def hoge!(obj)
return unless Hash === obj
def obj.method_missing(name, *_) = self[name]
obj.each_value{Hash === _1 && hoge!(_1)}
end
hoge!(data)
p data.metadata.commission # => "2"
# 冗談だけど
上下前次1-新書関写板覧索設栞歴
あと 665 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.014s