different behavior of stdlib ostruct vs. ostruct-gem
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 45/100
Direção de pesquisa
Comece em lib/ostruct.rb, na chamada []= indicada na linha 304, e reproduza o comportamento do Ruby 3.0 com ostruct 0.5.0 usando os exemplos da issue. Compare atribuições repetidas e dup com stdlib OpenStruct; considera-se concluído quando as atribuições atualizadas mantiverem a chave de símbolo esperada e dup não lançar mais o NoMethodError mostrado.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
I am on Ruby 3.0
With stdlib ostruct I get:
irb(main):002:0> x = OpenStruct.new
=> #<OpenStruct>
irb(main):002:0> x.varname1 = 'varval 1'
=> "varval 1"
irb(main):003:0> x.to_h
=> {:varname1=>"varval 1"}
irb(main):004:0> x.varname1 = 'varval 2'
=> "varval 2"
irb(main):005:0> x.to_h
=> {:varname1=>"varval 2"}
irb(main):006:0> x.varname2 = 'varval 3'
=> "varval 3"
irb(main):007:0> x.to_h
=> {:varname1=>"varval 2", :varname2=>"varval 3"}
irb(main):008:0> x.varname2 = 'varval 4'
=> "varval 4"
irb(main):009:0> x.to_h
=> {:varname1=>"varval 2", :varname2=>"varval 4"}
Starting with version 0.5.0 of the ostruct-gem: I get:
irb(main):001:0> x = OpenStruct.new
=> #<OpenStruct>
irb(main):002:0> x.varname1 = 'varval 1'
=> "varval 1"
irb(main):003:0> x.to_h
=> {:varname1=>"varval 1"}
irb(main):004:0> x.varname1 = 'varval 2'
=> "varval 2"
irb(main):005:0> x.to_h
=> {:varname1=>"varval 1", false=>"varval 2"}
irb(main):006:0> x.varname2 = 'varval 3'
=> "varval 3"
irb(main):007:0> x.to_h
=> {:varname1=>"varval 1", false=>"varval 2", :varname2=>"varval 3"}
irb(main):008:0> x.varname2 = 'varval 4'
=> "varval 4"
irb(main):009:0> x.to_h
=> {:varname1=>"varval 1", false=>"varval 4", :varname2=>"varval 3"}
one of many side effects is:
irb(main):009:0> y = x.dup
/var/lib/gems/3.0.0/gems/ostruct-0.5.0/lib/ostruct.rb:304:in `[]=': undefined method `to_sym' for false:FalseClass (NoMethodError)
Did you mean? to_s
- Linguagem predominante
- Ruby
- Estrelas
- 175
- Forks
- 35
- Merge médio
- 16h 14min
- PRs com merge (30d)
- 1
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de ruby/ostruct
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
-
new warning with ruby 3.4 Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 35/100
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 42/100
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 25/100
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
Todas as issues de ruby/ostruct
Issues semelhantes
-
user-reported
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
Kong/developer.konghq.com#7316 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
TheOdinProject/curriculum#31408 ·
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
notch8/utk_knapsack#148 ·
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 78/100
Homebrew/homebrew-cask#288729 · 1 comentário ·
-
Test `FileUtils.options_of` Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100