Skip to content

Instantly share code, notes, and snippets.

Hire me!

OKURA Masafumi okuramasafumi

Hire me!
View GitHub Profile
View mydsl.rb
# ライブラリコード
module MyDSL
class ClassMacro < Module
class StoredItem
attr_reader :name
attr_accessor :context
def initialize(name, block_args: [], &block)
@name = name
@block_args = block_args
@block = block
okuramasafumi / bench.rb
Created Nov 12, 2020
Ruby sum benchmark
View bench.rb
require 'benchmark'
huge_array = (1..10000000).to_a
Benchmark.bmbm do |x|
puts "Adding all numbers" { huge_array.sum } { sum = 0; huge_array.each {|i| sum += i }; sum} { huge_array.inject(:+) } { huge_array.inject(0) {|memo, i| memo + i} }
View Gemfile
# frozen_string_literal: true
source ""
git_source(:github) {|repo_name| "{repo_name}" }
gem "rails"
gem "sqlite3"
gem "jbuilder"
gem "active_model_serializers"
okuramasafumi / after.rb
Created May 18, 2020
View after.rb
class HogeSerializer < ActiveModel::Serializer
attributes :id, :hogehoge
has_many :fugas do |fuga|
fuga.attributes :id, :fugafuga
fuga.has_many :bars do |bar|
bar.attributes :id, :barbar
View vimconf2019.txt
Keynote: Vim Renaissance
By Prabir Shrestha
"I'm thankful to people in vim-jp"
"With LSP, you don't have to configure for every language!"
"If you're not using LSP, go use it!"
It works with every language, every OS, in Vim8 or Neovim...Great!
He talks about vim so passionately, that's awesome.
He says "Go use it!" so many times, I'd like to use LSP more!
View code_location.diff
diff --git a/proc.c b/proc.c
index 19ce7a1d19..3eb8c9445d 100644
--- a/proc.c
+++ b/proc.c
@@ -1196,6 +1196,24 @@ iseq_location(const rb_iseq_t *iseq)
return rb_ary_new4(2, loc);
+static VALUE
+iseq_code_location(const rb_iseq_t *iseq)
okuramasafumi /
Created Apr 28, 2019

Grow.rb アンチハラスメントポリシー





okuramasafumi /
Last active Apr 5, 2019
Weird rubygems error by redefining `find` method

Here, with broken_find.rb required, specification.rb raises an error saying stub is an Array.

/Users/okuramasafumi/.rubies/ruby-2.6.1/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1065:in find_active_stub_by_path': undefined method this' for #<Array:0x00007fc3e18ff960> (NoMethodError)

The error disappears with working_find.rb required.

The only difference is whether if ifnone exists or not.

However, in specification.rb uses find method without ifnone argument. This means ifnone is nil.

View hash_to_proc.rb
hash = {foo: 1, bar: 2, buzz: 10}
words = %i(foo bar buzz)
p # => [1, 2, 10]
proc_obj = hash.method(:[]).to_proc
p # => [1, 2, 10]