Ruby

 Computer >> コンピューター >  >> プログラミング >> Ruby
  1. その場でRuby列挙子を作成する

    コレクションを列挙子として扱うと、追加のコードを記述しなくても、#mapや#reduceなどのお気に入りの関数をすべて使用できるようになります。とても素晴らしいです。 昔は、列挙子を定義するのは少し面倒でした。新しいクラスを作成し、Enumerableモジュールを含め、#each関数を定義する必要がありました。 ただし、Ruby 1.9以降、列挙子をその場で定義するためのはるかに軽量な方法があります。見てみましょう。 列挙子クラスの紹介 Enumeratorクラスでは、ブロック構文を使用して1回限りの列挙子を定義できます。以下の例では、無限の一連の乱数を返す列挙子を作成します。 e =

  2. シングルページアプリを...turbolinksのために捨てますか?

    Turbolinks-おそらくRailsの世界で最も軽蔑されている言葉の1つです。 たぶん、あなたはそれを試してみました。新しいプロジェクトまたは既存のアプリにターボリンクを含めました。そしてすぐに、アプリは奇妙で素晴らしい方法で失敗し始めました。修正は同じくらい簡単でした。ターボリンクをオフにしてください。 ...しかし、一部の企業はそれを機能させています。ここHoneybadgerでは、それを機能させました-そして私たちは天才ではありません。 答えはとても単純なので、私はそれを持ち出すのをほとんどためらっています。しかし、RubyNationとMadison+ Rubyでこのテーマに

  3. JekyllのH2からサブナビゲーションを自動的に生成します

    Jekyllを使用してドキュメントサイトを再構築しています。ドキュメントページはかなり大きいため、トップレベルのナビゲーションに加えて、なんらかのサブナビゲーションが必要です。 この投稿では、投稿またはページの見出しからサブナビゲーションリンクを生成できる簡単なJekyllプラグインを作成する方法について説明します。 概要 このプロジェクトを次のタスクに分割しました: サイトのすべてのページに対して実行されるJekyllジェネレーターを作成します。 見出し情報を抽出できるように、ページを事前にレンダリングする方法をジェネレーターに教えます。 nokogiriを使用してページを解析し、H

  4. Jekyllによる複数レベルのサブナビゲーション

    以前の投稿で、Jekyllページの各H2のサブナビゲーションリンクを生成する方法を示しました。この投稿では、その基盤の上に構築し、H3、H4などに基づいて任意のレベルのサブナビゲーションを追加する方法を示します。 概要 このプロジェクトをいくつかのステップに分けました: まず、nokogiriを使用して、H2タグの「内側」にあるH3タグで定義されたセクションを引き出します 次に、クールなトリックを使用して、任意のレベルのサブナビゲーションをレンダリングします。再帰的なテンプレートを作成します。 始める前に、何かを明確にしましょう。 H3タグをH2の内部にあると言うとき、それが文字通りネ

  5. Rubyの改良と語彙スコープを理解する

    これまでに改良を使用したことがない場合は、おそらく驚きに満ちています。モンキーパッチの代わりに改良が加えられたと聞いたことがあるかもしれません。したがって、ActiveSupportのhoursのようなものを実装できると期待するかもしれません。 方法: module TimeExtension refine Fixnum do def hours self * 60 end end end class MyFramework using TimeExtension end class MyApp < MyFramework def inde

  6. Rubyの改良点のベンチマーク

    裏話をまったく知らずにGoogleでRubyの改良点を検索すると、改良点が遅いという考えに気付くかもしれません。 それらが最初に提案されたように、改良は遅かったでしょう。それらは、インタプリタがメソッドルックアップのようなものを最適化することを不可能にしていたでしょう。 しかし、改良の実際の実装は、元の提案よりも少し制限されています。そのため、今日のRubyに存在するように、改良点について一連のベンチマークを実行するのは興味深いと思いました。 TL; DR 洗練は遅くはありません。または、少なくとも「通常の」方法よりも遅くはないようです。 ダミーロード メソッド呼び出しのベンチマー

  7. Ruby正規表現内での条件の使用

    2013年にRuby2.0が出荷した多くの新機能の中で、私が最も注意を払わなかったのは、新しい正規表現エンジンであるOnigmoでした。結局のところ、正規表現は正規表現です-なぜRubyがそれらを実装する方法を気にする必要があるのですか? 結局のところ、Onigmo regexエンジンには、正規表現内で条件を使用する機能など、いくつかの巧妙なトリックがあります。 この投稿では、正規表現の条件に飛び込み、Rubyによるそれらの実装の癖について学び、Rubyの制限を回避するためのいくつかの秘訣について説明します。始めましょう! グループとキャプチャ 正規表現の条件を理解するには、最初にグルー

  8. クールなRuby正規表現のトリック

    昨日の正規表現の条件に関する記事をフォローして、Rubyの正規表現で実行できる他の巧妙なトリックを見てみるのは楽しいだろうと思いました。 正規表現による文字列の分割 おそらく、テキスト区切り文字を使用した文字列の分割に精通しているでしょう: one,two.split(,) # => [one, two] しかし、splitが正規表現も受け入れることをご存知ですか? # use `,` and `-` as delimiters one,two-three.split(/,|-/) => [one, two, three] # Use comma as thousands

  9. Rubyで「自己」を理解する

    今日はselfについてお話したいと思います 。しばらくの間Rubyをプログラミングしているのであれば、selfのアイデアを内面化した可能性があります。 。プログラムを読み書きするときはいつでも、self あなたの心の後ろにあります。 ただし、経験の浅いRubyistの場合は、self 困惑する可能性があります。常に変化していますが、コードに明示的に表示されることはありません。あなたはただ知っていることが期待されています。 初心者が直面する問題の多くは、selfを理解していないことが原因です。 。インスタンス変数を「失った」か、ミックスインに表示されるデータに戸惑ったことがある場合は、s

  10. Rubyがプログラムを解釈して実行する方法

    ツールについてよく知っているほど、開発者としてより良い決定を下すことができます。特にパフォーマンスの問題をデバッグする場合は、Rubyがプログラムを実行するときに実際に何をしているのかを理解しておくと便利です。 この投稿では、簡単なプログラムが字句解析され、解析され、バイトコードにコンパイルされるまでの道のりをたどります。 Rubyが提供するツールを使用して、あらゆる段階でインタープリターをスパイします。 心配しないでください。専門家でなくても、この投稿は非常に簡単にフォローできるはずです。テクニカルマニュアルというよりはガイド付きツアーです。 サンプルプログラムをご覧ください 例とし

  11. スプラットを使用して、Rubyで配列を構築および分解します

    Rubyについて私が気に入っていることの1つは、その機能の深さです。演算子を使用することもできますが、少し掘り下げると、その機能のほんの一部にすぎないことがわかります。謙虚な感嘆符演算子(* および** )は良い例です。 おそらく、「キャッチオール」引数にスプラットを使用したことがあります。そして、それはほとんどの人がそれらを使用するすべてです。 def go(x, *args) puts args.inspect end go(a, b, c) newfangledキーワード引数構文を使用している場合は、次のように二重スプラットを使用します。 def go(**params)

  12. RubyEnumerablesのスライスとダイシング

    今日はslice_beforeについてお話します 、slice_when およびslice_after 。これらは、任意の基準に基づいて配列またはその他の列挙可能なアイテムをグループ化する必要がある場合に非常に便利な方法です。 あなたはおそらくArray#sliceに精通しているでしょう 。インデックスの範囲に基づいて配列のサブセットを引き出すことができます: a = [a, b, c] a.slice(1, 2) # => [b, c] これは便利ですが、列挙型にはインデックスがないため、列挙型では使用できません。 slice_before 、slice_when およびs

  13. 字句スコープとRubyクラス変数

    Rubyのクラス変数は紛らわしいです。熟練したRubyユーザーでさえ、直感的に理解するのが難しい場合があります。最も明白な例は、継承と関係があります: class Fruit @@kind = nil def self.kind @@kind end end class Apple < Fruit @@kind = apple end Apple.kind # => apple Fruit.kind # => apple kindの変更 子クラスの変数は、親クラスでも変更します。それはかなりめちゃくちゃです。しかし、これはまさにその言語

  14. Rubyプロセスの実行をスパイする

    実行中のプロセスで発生するすべてのメソッド呼び出しをリアルタイムでログに記録できることをご存知ですか?実行中のプロセス内で実行するコードを挿入するのはどうですか? rbtraceの魔法を使って 宝石。 rbtrace 宝石には2つの部分があります。 1つ目は、トレースするコードに含めるライブラリです。 2つ目は、トレースデータをクエリするためのコマンドラインユーティリティです。 簡単な例を見てみましょう。トレースするコードは非常に単純です。私たちがしなければならないのは、rbtraceを要求することだけです 宝石。 require rbtrace require digest requir

  15. コードを解析するRubyをご覧ください

    実用的で便利なコンテンツから少し離れて、Rubyパーティーのすっきりとしたトリックを紹介するのは楽しいと思いました。 Rubyがプログラムを実行する前に、プログラムを解析する必要があります。パーサーは一種のステートマシンです。また、Rubyにステートマシンが行うすべてのことをログに記録させるために使用できる、あまり知られていないコマンドラインフラグがあります。 次の例を見てください: a = 1 + 2 -yを使用してこれを実行した場合 フラグを立てると、次の出力が得られます: $ ruby -y sample.rb Starting parse Entering state 0 Re

  16. コマンドラインをレベルアップ-RubyでFu

    コマンドラインを実際に習得するには、数十(数百ではないにしても)の小さなユーティリティプログラムを習得する必要があります。これらはそれぞれ、動作が少し異なります。それはかなり圧倒される可能性があります。 幸い、これらの単一目的のツールの多くを、Rubyのような汎用プログラミング言語に置き換えることができます。そうすれば、コマンドライン-fuをレベルアップするためにすでに必要なRubyの知識を使用できます。 この投稿では、Rubyをコマンドラインのスイスアーミーナイフとして使用するための基本について説明します。私は賢いワンライナーであなたを攻撃するつもりはありません。代わりに、実際にどの

  17. Rubyでの分数と有理数の操作

    告白します。浮動小数点数はちょっと嫌いです。確かに、コンピュータの場合は便利ですが、人間の場合は、次のような状況で頭をかいてしまいます。 129.95 * 100 # => 12994.999999999998 これは数学的調和に直面して飛ぶだけでなく、悪いUXでもあります。 レシピで0.37211927843カップの小麦粉を測定するように指示された場合、著者が何であるかについて自分自身を笑わせ、カップの3分の1を測定し始めたでしょう。 ほとんどの人は、任意の10進数について考えるよりも、分数についてはるかに簡単に考えることができます。そのため、アプリが数値を人に伝えようとして

  18. TracePointを使用してRubyでの複雑な例外動作を調査する

    特に大規模なアプリでは、例外を除いて何が起こっているのかを理解するのが非常に難しい場合があります。既存のプロジェクト内のコードで作業していると想像してください。例外を発生させると、何か奇妙なことが起こります。たぶん例外は飲み込まれます。たぶん、環境変数が変更されます。例外が別の例外にラップされる可能性があります。 TracePointsを使用して、例外が飲み込まれた場合でも、アプリの例外に関するもう少し情報を取得する簡単な方法を紹介します。 便利な例 Railsのコントローラーとビューの境界は、例外がロジックに反しているように見える1つの場所です。自分で見るのは簡単です。ビューで例外を発生

  19. Rubyで例外が発生したときに再試行する方法

    すべてのエラーが致命的というわけではありません。再試行する必要があることを示すものもあります。幸い、Rubyには、「再試行」を容易にするいくつかの興味深いメカニズムが用意されていますが、すべてが明白またはよく知られているわけではありません。この投稿では、これらのメカニズムと、それらが実際にどのように機能するかを見ていきます。 retryの紹介 わかりました-これは明らかですが、それが存在することを知っている場合に限ります。個人的には、楽しい「再試行」キーワードについて学ぶ前は、Rubyのキャリアに精通していました。 再試行は、Rubyの例外レスキューシステムに組み込まれています。とても簡

  20. Exception#causeを使用したRubyのネストされたエラー

    Rubyでは、別の種類の例外をレスキューして例外を発生させ、再発生させるのが一般的なパターンです。 ActionViewは、この非常に明白な例の1つです。 TracePointに関する以前のブログ投稿で述べたように、ActionViewはテンプレートで発生した例外をすべて飲み込み、ActionView::TemplateErrorとして再発生させます。 。 時々これは十分ではありません。問題の解決に役立つデータが含まれているため、元の例外が本当に必要です。幸い、Ruby 2.1では、Exception#causeメソッドを使用してそれを実行できます。 それが実際にどのように機能するか見てみ

Total 560 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:25/28  20-コンピューター/Page Goto:1 19 20 21 22 23 24 25 26 27 28