タグ

関連タグで絞り込む (238)

タグの絞り込みを解除

Rubyに関するyukimori_726のブックマーク (273)

  • ActiveRecordのestablish_connectionを読む - kotaroito's notes

    ActiveRecord における DB との接続確立方法をきちんと理解できてなかったので、pry-byebug を使いながらコードを読み解いてみる。 Railsのversion は 4.2.0 という前提で。 establish_connection blog.livedoor.jp sonots さん解説の通り、Rails を起動すると establish_connection メソッドが呼び出される。 # lib/active_record/connection_handling.rb def establish_connection(spec = nil) spec ||= DEFAULT_ENV.call.to_sym resolver = ConnectionAdapters::ConnectionSpecification::Resolver.new configuratio

    ActiveRecordのestablish_connectionを読む - kotaroito's notes
  • Rubyで実装して楽しむ古典データ構造再入門(平衡木編) - hama_duのブログ

    Competitive Programming Advent Calendar 2014 7日目です。 今回は古典的なデータ構造をRubyで実装してみます。 まず通常の木、二分木からはじめ、その次に二分探索木、そして二分探索木に少し機能を加え高性能にした平衡二分探索木を扱います。 冒険の地図 木 二分木 二分探索木 平衡二分探索木 ランダム挿入二分探索木 Treap 基 木(Tree) 以下の図は木の例です。一番上にある頂点(丸)を根と呼びます。各頂点に直接ぶら下がっている頂点たちをまとめて子と呼びます。子を持たない頂点を葉と呼びます。 頂点同士は辺(棒)で結ばれています。木には、辺によってループができないという特徴があります。 木の性質 木には素晴らしい性質があります。各頂点の子を根と考える(上の部分は無視する)と、それぞれの子も木になっているという点です。それらの木のことを部分木と呼

    Rubyで実装して楽しむ古典データ構造再入門(平衡木編) - hama_duのブログ
  • Ruby on Railsの事例まとめ(海外有名サイト編)

    だれかに「Webサービス起業したいのだけど何を使ったらいいかな?」みたいな質問を受けたら「Railsだね」とぜったいに答えます。「ふーん」という感じなのですが、その時に「だってこんなサービスも使ってんだよ」と言うと「ああ、だったらすごいかも」ってな具合に納得してくれるんですよね。やっぱり事例っていうのは物凄い破壊力を持っているなと感じています。 そこで今回はRailsで作られたサイト。その中でも有名サイトをいくつかご紹介しようと思います。 今回はRuby on Rails事例の海外海外のスタートアップでRailsの需要はものすごくあります。私は去年サンフランシスコに行ってきて、Instacartというスタートアップにお伺いしてお話しを聞く機会があったのですが、その時に「いやぁ、このサンフランシスコではRailsエンジニア当に不足しているんだ。年収は日円で1300万円くらい。でも

    Ruby on Railsの事例まとめ(海外有名サイト編)
  • 依存関係をなくそう : Rubyアプリ・Gemの開発者への提言 | POSTD

    記事はRubyについて書かれたものではありますが、PythonJavaScriptJavaなど、全ての言語コミュニティに当てはまる事実を述べたものです。依存関係が引き起こす負の連鎖は誰のためにもなりません。 上の図は、私がこれまでに使用した全てのRailsアプリの依存関係を可視化したものです。以下の例はいずれも、どこかで聞いたことのあるものではないでしょうか。 何百ものエントリを含むGemfile 番環境で読み込まれるテスト用Gem 数百メガバイトもRAMをRailsのプロセス Rubygemsシステムは、それを再利用する誰もが容易にRubyのパッケージを作ることができるという点で、賞賛に値するものです。しかし、その便利さが意味するところは、そうしたGemと他のGemを非常に安易に結び付け、さらにそれが、「インターネットでダウンロード」され、数百もの依存関係を持つRailsアプ

    依存関係をなくそう : Rubyアプリ・Gemの開発者への提言 | POSTD
  • ライブラリ中にテストコードを書く"if __FILE__ == $0" - ハード屋のヨコ好き

    自分で書いたライブラリを簡単にテストしたいなぁと思った時に使える方法です。 if __FILE__ == $0 #テストコード end ライブラリ中にこのように記載した箇所は、直接実行した場合には呼ばれるが、requireした時にはよばれません。 覚えておくと便利かもしれません。 requireしたとき処理されず直接実行した時だけ処理される仕組みは、__FILE__と$0の意味が違うことを利用しています。 __FILE__:書いてあるスクリプト名 $0($PROGRAM_NAME):実行スクリプト名 Javaとかでライブラリ中のmain()だったり、Pythonでも"if __name__ == '__main__':"という書き方がちょうど同じものになります。

    ライブラリ中にテストコードを書く"if __FILE__ == $0" - ハード屋のヨコ好き
  • Bundlerのインストール時に、初めてgemをインストールするときに詰まったこと。 - Qiita

    フロントエンジニア歴2年目、未だにコマンドのインストールが苦手なエンジニアです。 サンプルアプリをRailsで作ろうとして、Bundlerをインストールするときに詰まったのでメモしておきます。 主にパスの通し方で悩んでいました。 Bundlerについて Gemfileに記載されたパッケージの種類・バージョンのものをインストールするための仕組み。 Gemパッケージ Rubyで使うライブラリやアプリケーションを、RubyGemというツールでインストールできるようにしたもの。 Gemfileに必要なGemとバージョンを記載しておく。npmとかBowerみたいなやつ。 ruby 2.x.x以上でデフォルトでgemコマンドが使えます。 動作確認環境 ruby 2.1.2 shellはzsh(詳しくはない) 1. Bundlerのインストール $ gem install bundler // Bund

    Bundlerのインストール時に、初めてgemをインストールするときに詰まったこと。 - Qiita
  • Test::Unitでテストを書く - Qiita

    テストの書き方 基 今までのTest::Unitと変わらないので,classで書く.ただ,昔のTest::Unitとは違い,TestCase毎に呼ばれるstartupやshutdownなどが増えている. require 'test/unit' class TestSample < Test::Unit::TestCase class << self # テスト群の実行前に呼ばれる.変な初期化トリックがいらなくなる def startup p :_startup end # テスト群の実行後に呼ばれる def shutdown p :_shutdown end end # 毎回テスト実行前に呼ばれる def setup p :setup end # テストがpassedになっている場合に,テスト実行後に呼ばれる.テスト後の状態確認とかに使える def cleanup p :cleanup

    Test::Unitでテストを書く - Qiita
  • CRubyとLink Time Optimizationについて - なるせにっき

    最近、夜寝る前にRubyのベンチマークを眺めたり、仕事の障害時のログを眺めるっていう悪趣味極まりない習慣がついてしまった。まぁ、草木も眠る丑三つ時にこの世の真理を求めて何かを読みふけるって言うのは、この業界にいる人間なら誰しもがやることなんじゃ無いかと思う。それと同じで現場百遍とも言うとおり、何度もprofileやログを眺めれば何か気付くこともあるんじゃないかと思って読んでいる……というわけではなくて、ふと見たくなる衝動に従っているだけだけど。 さて、Rubyのprofileを取るときに便利なのがRubyKaigi 2015でこさきさんも紹介していたperf。あまりに便利なせいで、プライベートでLinuxを触る時間が何千倍にも増えたくらい。あの発表はもっぱらperf-topの紹介だったけど、perfの使い方とかを見ると他にも色々な機能があることがわかる。例えば、昨日話題になったひたすらbl

    CRubyとLink Time Optimizationについて - なるせにっき
  • 複数のサーバでインタラクティブにコマンドを実行する - Qiita

    最初 ssh username@hostname "コマンド" の形式で動いていたけど、途中でvirtualenvのworkonを実行すると「command not found」と言われたのでRubyで並列実行してみた。 Ruby便利ー # ruby 2.1.5 require 'pty' require 'expect' def run console, host timeout = 10 PTY.spawn "ssh #{host}" do |r, w, pid| w.sync = true r.expect console, timeout do w.puts "date" end r.expect console, timeout do |capture| # captureは[マッチした文字列, 正規表現のキャプチャ1, ...] lines = capture[0].split

    複数のサーバでインタラクティブにコマンドを実行する - Qiita
  • nil safeなmethod chainをどう書くか - yasuhisa's blog

    rubyを書くときはmethod chainでつなげていくことが多いと思いますが、途中でnilが出てきたとき困ってしまいます。例えば str.split("/").last.split(".").last のようなコードがあったときにstrに空文字が入ると途中でnilが出てきて死にます。clojureだとnil safeなthreding macroというのが公式にあって、nilが途中できたら計算を途中で止めてnilを返させることができます。 some-> - clojure.core | ClojureDocs - Community-Powered Clojure Documentation and Examples rubyではどうやるのかと思っていて、ちょっと探した感じだとgemのtryというやつを使うとよさそうです。 null - Ruby check if nil before

    nil safeなmethod chainをどう書くか - yasuhisa's blog
  • Rubyでforkを利用したマルチプロセスでコアを使い切りたい気持ち - Qiita

    Rubyで書かれたちょっと重たいバッチ処理があって速くする必要があったので、fork(2)とpipe(2)を使ったマルチプロセス化でコアを活かした並列処理に書き直した話します。 以下の記事に詳しく書いてあるので、TL;DRはそちらを見てな? Forking and IPC in Ruby, Part I Forking and IPC in Ruby, Part II なるほどUnixプロセス ― Rubyで学ぶUnixの基礎 - 達人出版会 Threadじゃいかんの? — GILについて 並行プログラミングとしてまず最初に思いつくのはマルチスレッド化ですが、RubyにおいてはGVL(Giant VM lock)があるためマルチコアを活かすことは難しいのです。 ネイティブスレッドを用いて実装されていますが、 現在の実装では Ruby VM は Giant VM lock (GVL) を有し

    Rubyでforkを利用したマルチプロセスでコアを使い切りたい気持ち - Qiita
  • Kernel#test が便利 - rochefort's blog

    Array#sort_byのマニュアルを見ていたら便利そうなKernel.testの記述がありました。 Array#sortのマニュアルより抜粋 まずはsortとsort_byのbenchmark require 'benchmark' a = (1..100000).map {rand(100000)} Benchmark.bm(10) do |b| b.report("Sort") { a.sort } b.report("Sort by") { a.sort_by {|a| a} } end produces: user system total real Sort 0.180000 0.000000 0.180000 ( 0.175469) Sort by 1.980000 0.040000 2.020000 ( 2.013586) sort_by遅いね。 しかし、、、 ファイルの

    Kernel#test が便利 - rochefort's blog
  • #CookpadTechConf 2016で「Railsアプリ開発環境の高速化」について話した - k0kubun's blog

    クックパッドの社員が発表するCookpad TechConfというイベントの第一回が今日行われ、「Railsアプリ開発環境の高速化」というテーマで話してきた。 開発環境の改善について 僕が技術部に入る前、サービス開発をやる中で一番不満だったのが開発環境のパフォーマンスだったので、技術部に配属されたころからこの仕事をやりたいと思っていた。 今回は先輩方が既に行っていた開発環境のパフォーマンスチューニング - クックパッド開発者ブログの一部を紹介しつつ、その続きとして自分がやってきたことを発表した。 業務で出した成果のうちいままで外部で発表したのはbyebugの高速化くらいだったので、普段僕がどんな仕事をやっているのか紹介する良い機会になった。 発表内容の補足 思ったより15分の枠で話せたことが少なかったので、発表内で話し足りなかったことについて書く。 libsassおすすめです 急いでて全然

    #CookpadTechConf 2016で「Railsアプリ開発環境の高速化」について話した - k0kubun's blog
  • なるほどUnixプロセス読んだ - デーモン化のためのdouble fork - はこべにっき ♨

    なるほどUnixプロセス ― Rubyで学ぶUnixの基礎を読みました。UNIXプロセスの話、特に実用的なforkの利用方法についての話がコンパクトにまとまっていてわかりやすかったです。あまり詳細に踏みこんでいるという感じではないけど、とっかかりにこのにあるような知識があるのは良いと思いました。(シェルスクリプトから"foreman start"したときにCtrl-Cで終了できない現象の解説 - はこべブログ ♨ではまる前に読んでおいたら、もっとはやく問題解決できたと思います。) 第18章 デーモンプロセスに関係して二回目のforkについていろいろ調べたので、せっかくなのでメモを残しておきます。*1 第18章 デーモンプロセス では、プロセスをデーモン化するために必要な手順が丁寧に説明されています。その中で、プロセスを制御端末から切り離す手順として以下のようなコードが紹介されていました。

    なるほどUnixプロセス読んだ - デーモン化のためのdouble fork - はこべにっき ♨
  • コードリーディングを始めよう ― @IT

    優れたプログラマはコードを書くのと同じくらい、コードを読みこなせなくてはならない。優れたコードを読むことで、自身のスキルも上達するのだ(編集部) Ruby on RailsRails)には、scaffoldという大変便利な機能が付いています。scaffoldを使えば、アプリケーションの実行に必要なデータベースのスキーマの準備から、データベースにアクセスするコード、画面周りのコードまで、一通り自動生成してくれます。 そのおかげもあって、多くの開発者がscaffoldを使ったRailsのアプリケーションを試しに作ったことでしょう。ただし、scaffoldはあくまで土台であって、その後は、生成されたコードを拡張していく必要があります。 連載ではコードリーディングという形で、オープンソースとして公開されているRailsアプリケーションのソースコードを題材に使って、その動きや機能がどのように実装

    コードリーディングを始めよう ― @IT
  • RubyGemのソースを読む(設定編) - Qiita

    前書き 結構自分は、オープンソースのプロダクトからRubyの書き方を習得していることが多いです。 とか読むのは三秒で飽きる方でGithubのdefunktも何かのインタビューでそんなこと言ってました。 ソースを読む手段もまぁまぁ筋が良いやり方があると思っており、そのRubyの設定を解説します(実践編はまた解説します。) また DHH もソースをガンガン読めと言っています - リンク rbenvとbundlerを入れる rbenvのインストールは、他の記事に譲るとして、重要なのはbundlerです ダメな例 これはシステムの方のbundlerを読みに言ってしまっています。

    RubyGemのソースを読む(設定編) - Qiita
  • Rubyライブラリのソースコードリーディング(Sinatra編) - (2015年までの)odaillyjp blog

    東京Ruby会議10で「ライブラリのソースコード読むと勉強になる」とのお話がありました。読んでみたいけど、初めて読むのに良いライブラリは何なのかわかりません。1000行くらいのライブラリなら読めそうだと思ったので、コードの行数でライブラリを調べてみたところ、Sinatra の base.rb が約1700行だと知りました。初めてでも読めそうな量なので、今回は Sinatra(1.3.4) の base.rb を読んでみることにしました。 コードリーディング環境 tmux でコンソール画面を分割し、片方の画面でソースコードを開き、もう片方の画面で pry を起動しました。こうしておくと、ソースコードを読んでいて気になった構文があれば、pry ですぐに確認できて便利です。また、git でコードリーディング用のブランチを作っておいて、気になったことはコードに直接コメントを書き入れていきました。

    Rubyライブラリのソースコードリーディング(Sinatra編) - (2015年までの)odaillyjp blog
  • この冬はじめよう! 5分で理解するGemのコードリーディング(1) settingslogic - Qiita

    概要 Gemのコードリーディングで、広く使われている高品質なコードからテクニックや定石を学んでいきます。 はじめに いきなりRailsとかRspecを読みにいくのもツラそうなので、ここでは初心者向けとウワサのsettingslogicを読んでいくことにします。Gemを読む際の難易度の目安としては、 初めてのGemの読み方を参考にさせて頂きました. 私自身は、いくつかのOSSで、放置されているissue(テストやドキュメンテーション)をお片付けしたことはありますが、普段、そんなにOSSにガッツリcommitしている訳でもありません。そんな私にとって、 メソッドの命名規則 メモ化、method chainの実現方法 コメントの書き方 など、Rubyのお作法を学ぶ題材として、またOSSのコードリーディングのきっかけとして、非常に良い題材だったと思います。 version 2.0.9を使用します。

    この冬はじめよう! 5分で理解するGemのコードリーディング(1) settingslogic - Qiita
  • [Ruby] メソッドチェイン - あおたくノート

    前回の最後にちょっと触ったメソッドチェインの話をするよ。 もくじ メソッドチェインって?コンフィギュレーション可メソッドチェイン化tapでもっとかわいくつなげてみるあとがきメソッドチェインって?メソッドを連続的に呼び出すことをメソッドチェインっていうんだけど、実際のコードを見てもらったほうが分かりやすいよ。 文字列をアンダースコア区切りからキャメルケースに変換するような処理を例にとってみるよ。 string = "hello_world" words = string.split("_") words = words.map {|word| word.capitalize } string = words.join("") ちょっと冗長な書き方だけど、一行ずつにしたほうが分かりやすいからね。 "hello_word"という文字列を"_"で分割して配列wordsに格納するよArray#map

    [Ruby] メソッドチェイン - あおたくノート
  • dRubyによる分散・Webプログラミング | オーム社 eBook Store

    dRubyは、オブジェクト指向プログラミング言語Rubyで書かれた分散オブジェクトフレームワークである。書は、最新のdRubyに基づいて作者自身が執筆した、dRubyとその周辺のライブラリのチュートリアル。dRubyの仕組みを理解し、アプリケーションを作りたい人に。 このような方におすすめ RubyやdRubyでアプリケーションを書きたい人 分散システムやマルチスレッドプログラミングに好奇心をかきたてられる人 J2EEなどちょっと大掛かりなシステムに疑問を感じている人 クライアント/サーバ型のネットワークプログラミングやCGI/JSP/ASP/Servletなどウェブプログラミングに興味のある人 分散オブジェクトシステムについての前提知識は必要なし。Rubyについては文法や標準のクラスライブラリについてほぼ理解していて、簡単なツールが書ける程度の知識があることが望ましい。(文より)

    dRubyによる分散・Webプログラミング | オーム社 eBook Store