タグ

rubyに関するlibra_666_arbilのブックマーク (147)

  • ruby は メソッドに return が不要なのではなく、元々そうなっているだけ - MUGENUP技術ブログ

    皆さん、こんにちは。MUGENUP の osada です。 いきなりですが、問題です。 def if_expression(flag) if flag "NG" else "OK" end end Ruby は 最後に評価された値が返る と言われていますね。 では、上記のメソッドで if_expression false の返り値は、何ですか? はい、正解です。OKが返ってきますね。 ちょっと長いので、リファクタリングしましょう。 def if_modifier(flag) "OK" "NG" if flag end さてもう一度。 if_modifier(false) の返り値は、何ですか? Ruby は 最後に評価された値が返る と言われていましたよね? はい。正解です。nil が返ってきますね。 え、"OK"じゃないのかって? いいえ、後置if は if とは全く違います。 右辺の条

    ruby は メソッドに return が不要なのではなく、元々そうなっているだけ - MUGENUP技術ブログ
  • Signals vs. Noiseの去年のエントリに、テストをどれくらい書くべきかということについてDHHが指針を示していたものがあったので... - Sooey

    Signals vs. Noiseの去年のエントリに、テストをどれくらい書くべきかということについてDHHが指針を示していたものがあったので読み返してみました。 Testing like the TSA by David of 37signals(TSAはTSAロックのTSAですね。RailsConf行く時に買った) 予想通り、DHHはなんでもかんでもテストを書くということに対してはだいぶ批判的なスタンス。 曰く、テストを書くということの裏側には、テストを書く時間、テストをアップデートする時間、テストコードを読んで理解する時間といったコストが発生しているので、テストを書くことによって得られるメリット(回避できる問題)とのバランスをよく考える必要がある、と。 議論を呼ぶことは承知のうえでDHHが提案する「Railsアプリのテストにおいて、やってはいけない7つのこと」は以下の通り。 100%の

  • Rails あるある

    2022年9月13日 株式会社メンバーズ ポップインサイトカンパニーでのウェビナーのスライドです。「ユーザーが欲しいと言った機能をつけたのに使われない!」という経験はありませんか。プロダクトをつくるとき「ユーザーの心理を理解しよう」とよく言われます。しかし、ユーザーに言われたままやることと、ユーザーが当に望んでいることは異なります。「UXデザインUXリサーチ」は、ユーザーを理解するための専門技術です。ユーザーインタビューやユーザビリティテストを用いてファクトを集めることで、ユーザーの表面的な言葉に惑わされない、当のインサイトにたどりつくことができます。かんたんなワークも交えながら、体系的に解説いたします。

    Rails あるある
  • #22 普段からRailsプロジェクトで使っている10個の便利Gem - KAYAC engineers' blog

    この記事は tech.kayac.com Advent Calendar 2014 22日目です。 こんにちは。Rubyを書いている @yumiyon です。 今回は、Railsプロジェクトで「○○がしたい!」と思った際に、自分がよく利用するGemを機能ごとに分けて10個ほどご紹介します。日頃からRailsで開発を行なっている方は既知のものばかりかもしれませんが、Railsを始めたばかりの方や、自分のための備忘録として。 目次 Gemとは 1、画像をアップロードしたい(CarrierWave) 2、管理画面を作成したい(ActiveAdmin) 3、環境毎に定数を管理したい(rails_config) 4、crontabを管理したい(Whenever) 5、スプレッドシートにアクセス(google_drive) 6、ページャーを実装したい(kaminari) 7、非同期処理を使いたい:ジョ

    #22 普段からRailsプロジェクトで使っている10個の便利Gem - KAYAC engineers' blog
  • rubocopによる静的コード解析でRubyのコード品質を保つ | Act as Professional

    rubocopRubyの静的コード解析ツールです。このコード解析を通すことによって、一定のRubyの書き方に統一することができます。また、不要な変数やメソッド名が長すぎるなど、一般的にRubyとして読みやすいコードにするための警告もされます。 こういった警告はRuby coding style and best practicesとしてRuby coding style guideにまとめられおり、Rubyを書くのであれば基的にはRuby coding style guideを一読しておくことをおすすめします。英語が苦手であれば、翻訳された日語版も存在します。 なぜ静的コード解析をするのか?静的コード解析し一定の読みやすいコードに統一することによって、人間が誤読する確率を下げることにより、バグなどの混入させる確率を下げる効果があります。また昨今ではGitHubコードレビューをするよ

    rubocopによる静的コード解析でRubyのコード品質を保つ | Act as Professional
  • The Elegant Ruby Web Framework - Padrino Ruby Web Framework

    gem install padrino padrino g project test_app -d datamapper -b cd test_app padrino g admin padrino rake dm:migrate seed padrino start Sinatra Core Many people love the simplicity and expressiveness of Sinatra but quickly find themselves missing a great deal of functionality provided by other web frameworks such as Rails when building non-trivial applications. Sinatra acts as a thin layer on top o

  • 新人プログラマに知ってもらいたいメソッドを読みやすく維持するいくつかの原則 - Qiita

    エンジニア組織を強くするためのを出版しました Qiitaでエンジニアリングをめぐる様々なコミュニケーションの問題とその解決策や考え方を書いてきた。それらの背後にあるエッセンスをこの度書籍として出版するに至りました。 エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング この書籍は、エンジニアリングを「不確実性を削減する」という第一原理で捉え直し、様々なエンジニアリングとその間のコミュニケーションをめぐる現象を説明していくものです。 あわせて読みたい 新人プログラマに知ってもらいたいメソッドを読みやすく維持するいくつかの原則 新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 ペアプログラミングして気がついた新人プログラマの成長を阻害する悪習 この記事について この記事は、新人向けの研修内容を再編集してお送りします。 この記事の内

    新人プログラマに知ってもらいたいメソッドを読みやすく維持するいくつかの原則 - Qiita
  • メタプログラミングをして割に合うかの判断基準:処理を1箇所に局所化できるか - 2014-01-16 - ククログ

    毎日他の人のコミットをながめる文化で生活していると、理由は浮かばないけど「ん?このコミットはなんか気になる」と感じるようになります。それは、新しいことを知ることができたコミットだったり、真似したくなるようなコードが入っているコミットだったり、なんかまずそうな気がするコミットだったり、様々です。 「ん?」と感じてコミットを見直してみても、何が気になったか自分でもすぐにわからない場合があります。そんなとき、気になったことをコミットした人に伝えるために、コミットへのコメントをまとめ始めます。「コミットした人に伝えるため」というように、他の人に伝えようとすることがポイントです。他の人に伝えるためにまとめようとすると、思いの外なにが気になったかまとまるものです。 今回は、メタプログラミングを使ってコードを整理したコミットで「ん?」と感じたときのことについて紹介します。このおかげで「メタプログラミング

    メタプログラミングをして割に合うかの判断基準:処理を1箇所に局所化できるか - 2014-01-16 - ククログ
  • あらためてRuby製のクローラー、"anemone"を調べてみた - プログラマでありたい

    3年ほど前に、Ruby製のクローラー"anemone"を紹介しました。その当時から完成度が高く、Rubyでクローラーを使う場合はanemoneを利用してきました。最近、他に新しくて良いのがないか調べましたが、機能面の網羅性という意味でanemoneを超えるものは見つけられませんでした。そこで改めてanemoneのソースを読んでみたところ、クローラーが必要とする機能を必要最小限で実装され、やはり中々良い出来です。冬休みの宿題ではないですが、勉強の意味を兼ねてソースを追っていくことにします。 Anemoneが利用しているライブラリ一覧 anemoneが利用しているライブラリは、4種類に分類できます。 Ruby標準or一般的なライブラリ データ取得で利用しているライブラリ データ解析で利用しているライブラリ データ保存で利用しているライブラリ この分類別に構造をみるとわかりやすいので、順番に追っ

    あらためてRuby製のクローラー、"anemone"を調べてみた - プログラマでありたい
  • Ruby 2.1.0 では Socket.getifaddrs で簡単にインターフェイスのアドレスを取れる - Qiita

    Ruby 2.1.0 に Socket.getifaddrs が登場 ネットワーク畑の人間からすれば、 Ruby 2.1.0 の目玉機能は間違いなく Socket.getifaddrs だ。これがあれば、「インターフェイス名からそのインターフェイスの持っているIPアドレスを確認する」ことが簡単にできるようになる。 これまで これまでは、 ifconfig や ip コマンドの結果から頑張って取ってこなくてはならなかった。 res = `ifconfig eth0` res =~ /inet addr:(\d+\.\d+\.\d+\.\d+)/ addr = $1 できるけど気持ち悪いし、v6アドレスになると死ぬし、外部コマンド実行をするとエラー対応とかセキュリティとかが厄介な問題になる。 これから Ruby 2.1.0 からは、 Socket.getifaddrs メソッドが追加されている

    Ruby 2.1.0 では Socket.getifaddrs で簡単にインターフェイスのアドレスを取れる - Qiita
  • 2013年Rubyの話題を一挙に振り返るまとめ | Engine Yard Blog JP

    Chef、 PHPにつづき、Rubyの今年2013年を今年人気を集めた記事をテーマ別にまとめました。はてなブックマークの数と一緒に振り返っていきます。今年の2月24日にRuby20周年を迎え、ruby-2.0.0がリリースされました。他にもRails4のリリース、RubyKaigiの再開など多くのトピックがありました。 目次 Ruby20周年!そしてruby-2.0.0, ruby-2.1.0のリリース 言語実装への興味、ガベージコレクションほか Rubyのひろがり Rails4のリリースとRailsの成熟 テスト、CI 開発環境、手法、デザイン チュートリアル、Ruby, Railsを始める Ruby 話題の 作りました! 新しいライブラリ ログ・マネージメント fluentd Tips! コーディング クライアントサイドとバックエンド Rubyを取り巻く環境、組織 TwitterがR

  • RubyでただのArrayだと思ってデータを追加したつもりなのに気がついたら全文検索出来ていた・・的なものを作った - ブログのおんがえし

    続きを書きました。 Ruby Advent Calendar 22日目の記事です RroongaというRubyで使える全文検索エンジンがあって愛用しているのですが、使う前の準備でカラム指定やデータ型を指定したり、全文検索のためのインデックステーブルを作るのが少し大変でした(大規模なアプリケーションの時はしっかり定義出来るので便利なのですが)。 普段使いで全文検索するために、実験的にRubyのArrayのように使えるようにしてみました。 インストール Rroongaを使うにはgemのインストールが必要です。他の全文検索エンジンと違ってそれ以外のソフトウェアのインストールが不要なのがいい所です。Windowsでも問題なく動きます。 $ gem install rroonga 今回書いたコードは以下にまとめてあります。 ongaeshi/grn_array - GitHub $ git clon

  • 標準出力をテストするためのライブラリをつくった | 774::Blog

    puts や print などの標準出力に文字列を出力するメソッドはちょっとしたスクリプトから規模の大きいプロダクトまで幅広く使われる。これらのメッセージ出力メソッドは使うのはお手軽だが、テストコードを書くことを考えると意外と面倒になる。そこで標準出力の内容を簡単にテストするための gem パッケージを作った。 stdout https://rubygems.org/gems/stdout ターミナルから以下のコマンドを投入すればインストールされる。 似たような機能のものは無くもなかったが、要件にイマイチ合わなかったので作ったほうが早いと思った。思想としては 1) 標準出力に出力されるはずのメッセージを一行ごとに配列オブジェクトとして取得できる 2) 小さくてシンプルお手軽、である。ちなみに Hadoop Streaming でも標準出力を使うので Ruby で Hadoop を利用する際

  • 昨日Qiitaに投稿した記事は普段のコードレビューの副産物 - give IT a try

    はじめに: 技術ネタは最近Qiitaに書いています このブログはもともと「技術系ブログ」としてスタートしました。 イメージとしては「技術的な問題に遭遇してググったら引っかかるようなサイト」です。 普段そういうページによく助けられているので、自分もgive&takeの精神で情報発信していこう、と思ったのが動機です。 しかし、去年の夏にQiitaに出会って以来、シンプルな技術的なネタはQiitaに書くようにしています。 理由はQiitaというサービスの方向性がまさに「技術的な問題に遭遇してググったら引っかかるようなサイト」だったことに加え、Qiitaの中の人に出会って「Qiitaにかける情熱」を直接聞いて、僕も応援したいな~と思ったからです。 そんなわけで、このブログが更新されていなくても、ときどきQiitaにポロッとTips的なネタを書いたりするときがあります。 気になる方はQiitaで僕の

    昨日Qiitaに投稿した記事は普段のコードレビューの副産物 - give IT a try
  • Rubyで開発するときに入れておきたい三種のRubyGems - KAYAC engineers' blog

    「つくるための三種の神器」というテーマで続けている「777ブログウェイ」! 9日目となる日は「Rubyで開発するときに入れておきたい三種のRubyGems」と題して、定番の RubyGems を3つご紹介します。 1. bundler「bundler」は、アプリケーションが依存するgemを管理するツールです。今やgem管理のデファクトスタンダードです。 「gem install hoge」のようにコマンドで gem をインストールしていくと、あれよあれよとグローバルな領域にどんどん色んなgemが…それも複数バージョン混在していきます。そして、いずれは、このアプリケーションで必要なgemはどれだっけ…バージョンはいくつだっけ…といった具合に、どんどん依存関係が分からなくなってきます。ここで活躍するのが「bundler」です。 使い方はいたって簡単。1) bundler のインストールgem

    Rubyで開発するときに入れておきたい三種のRubyGems - KAYAC engineers' blog
  • CoreからRubyのバックトレースを表示するgdbruby.rbを作った

    gdbperl.plというスクリプトがあります。そんkする樋口証さん作の、gdbを操作してPerlのプロセスのバックトレースを取るツールです。生きているプロセスだけではなく、coreを取っておけばそのcoreからバックトレースが取れるのが特徴です。 gcoreというコマンドが/usr/binあたりにあって、これを使えば走っているプロセスのcoreを取得することができます。よって、番環境で気軽にcoreを取ってgdbperl.plにかけることによって、刺さっているポイントを見つけたりすることができます。超便利。 くわしくは、Perlスクリプトをgdbでデバッグを参照ください。 んで、その便利なgdbperl.plをRubyに移植してみました。その名もgdbruby.rb。単純。 gdbruby.rb 使い方とか Rubyはデバッグシンボル付きのものをご用意ください。 生きているプロセスにア

    CoreからRubyのバックトレースを表示するgdbruby.rbを作った
  • RubyとPythonの違いからガベージコレクタを理解する - ワザノバ | wazanova.jp

    http://patshaughnessy.net/2013/10/24/visualizing-garbage-collection-in-ruby-and-python Pat Shaughnessyが、ブタペストで開催されたRUPY2013でのプレゼンの前半を自らのブログで紹介しています。 ガベージコレクタは、「ゴミを集める」という行為だけでなく、「新しいオブジェクトのためにメモリをあてがう。」「不要なオブジェクトを見つける」「不要なオブジェクトからメモリを取り戻す。」という、人間の心臓が血液を浄化するような働きをしている。 この簡単なコードサンプルを見ると、RubyPythonの記述はよく似ているが、それぞれの言語の内部でのインプリの仕組みは違う。 1) Rubyのメモリ Rubyは、コードが実行される前に、数千のオブジェクトを先につくり、それをリンクされたfree listに置

  • Sequel について (その1) - tmtms のメモ

    最近 Sequel というライブラリを触ってるので簡単にまとめてみます。 Sequel Sequel は Ruby の構文で SQL クエリを記述するためのライブラリです。 SQL の文法が嫌いな自分には持って来いです。 RDB 毎の差異も吸収してくれます。 自分は MySQL しか知らないので、以下は MySQL での例です。 インストール % gem install sequel % gem install ruby-mysql 接続 DB = Sequel.connect('mysql://user:password@hostname:port/dbname') # または DB = Sequel.mysql('dbname', :host=>'hostname', :user=>'user', :password=>'password', :port=>'port') 上の例では定

    Sequel について (その1) - tmtms のメモ
  • Ruby Hacking Guide を Kindle で読めるようにする - Stats of the Rivers

    Rubyソースコード完全解説 というがあります。 その名の通り Ruby 処理系のソースコードについて解説もので、 Ruby Hacking Guide (略して RHG) という名称でも知られています。 他に類を見ない日語で書かれた言語処理系ソースコード解説ということで非常に貴重なです。 さて、このは2002年に出版され、残念ながらすでに絶版となっているこのですが、ありがたいことに2004年に著者の青木峰郎さんが HTML 形式で文を公開*1されていて、今でも全文を読むことができます。 でもやっぱり Kindle で読みたいので Kindle 用の .mobi ファイルをつくることにしました。 基的には、以下の流れで .mobi ファイルを生成します。 RHG の HTML 版のアーカイブをサポートページからダウンロードする .mobi ファイル生成のためのコマンドラインツ

    Ruby Hacking Guide を Kindle で読めるようにする - Stats of the Rivers
  • Capistrano 3への手引き - 今日のごはんは素麺です

    Capistrano、便利ですよね。 capistrano/capistrano 最近メジャーバージョンアップがあったのですが、使い方、というかスクリプトの書き方やお作法が変わり、「Capistrano 3にアップデートしたはいいけど全然動かなくてどうなってんだ」という流れはもはやお約束みたいです。 試しに僕も個人で作ってるウェブサイトのCapistranoをアップデートしてみたので、その上でこんなところに気を付けたいな、と思うポイントでも書いておきます。 capifyは使わない Capistranoを使うときは$ bundle installをし、次に$ bundle exec capify .とするのがお約束の流れですが、これからはcapifyを使ってもcap installを使ってねと言われます。 ですので: $ bundle exec cap installとしましょう。 マルチス

    Capistrano 3への手引き - 今日のごはんは素麺です