{"provider_name":"Hatena Blog","blog_title":"rochefort's blog","image_url":"https://images-fe.ssl-images-amazon.com/images/I/5186AWFoSXL._SL160_.jpg","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Frochefort.hatenablog.com%2Fentry%2Feffective_ruby_section24_release_resources\" title=\"Ruby \u30ea\u30bd\u30fc\u30b9\u306f\u30d6\u30ed\u30c3\u30af\u3068ensure\u3067\u7ba1\u7406\u3057\u3088\u3046 - rochefort&#39;s blog\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","author_url":"https://blog.hatena.ne.jp/rochefort/","provider_url":"https://hatena.blog","categories":["ruby"],"published":"2018-02-27 08:00:00","blog_url":"https://rochefort.hatenablog.com/","url":"https://rochefort.hatenablog.com/entry/effective_ruby_section24_release_resources","width":"100%","author_name":"rochefort","version":"1.0","description":"File::open\u306e\u8a71\u306b\u3068\u3069\u307e\u3089\u305a\u3001\u30ea\u30bd\u30fc\u30b9\u3092\u78ba\u4fdd\u3059\u308b\u3068\u3044\u3046\u30b3\u30fc\u30c9\u306e\u62bd\u8c61\u5316\u306e\u7d39\u4ecb\u3002 \uff08File::open\u306b\u3064\u3044\u3066\u306f\u3053\u3053\u3067\u306f\u7701\u7565\uff09 Effective Ruby\u4f5c\u8005: Peter J.Jones\u51fa\u7248\u793e/\u30e1\u30fc\u30ab\u30fc: \u7fd4\u6cf3\u793e\u767a\u58f2\u65e5: 2015/01/19\u30e1\u30c7\u30a3\u30a2: Kindle\u7248\u3053\u306e\u5546\u54c1\u3092\u542b\u3080\u30d6\u30ed\u30b0 (5\u4ef6) \u3092\u898b\u308b \u9805\u76ee24 \u30ea\u30bd\u30fc\u30b9\u306f\u30d6\u30ed\u30c3\u30af\u3068ensure\u3067\u7ba1\u7406\u3057\u3088\u3046 ensure\u3092\u4f7f\u3063\u3066\u30ea\u30bd\u30fc\u30b9\u306e\u89e3\u653e\u3092\u884c\u3046\u4f8b class Lock def self.acquire lock = new lock.exclusive_lock! yield(lock) ensure lock.unlo0ck\u2026","height":"190","type":"rich","title":"Ruby \u30ea\u30bd\u30fc\u30b9\u306f\u30d6\u30ed\u30c3\u30af\u3068ensure\u3067\u7ba1\u7406\u3057\u3088\u3046"}