タグ

rubyに関するmanimotoのブックマーク (32)

  • あの日見たerbを僕達はまだ知らない。

    この記事は MICIN Advent Calendar 2022 の1日目の記事です。 はじめに Ruby on Railsを書いている人であれば、ほとんどの方がindex.html.erbのようなerbファイルを書いたことがあると思いますが、その仕組みについてはあまり知られていないのではないでしょうか。 記事では、erbの仕様と機能、そしてRuby on Railsのrenderメソッドがどのようにerbを描画しているかについて紹介したいと思います。 (正直、近年フロントエンドとバックエンドの分離が進み、Ruby on Railsフロントエンドを書くことが少なくなり、記事の需要もほぼ無いようにも思われますが、気にせず進めていきたいと思います。) 記事ではRuby 3.1.2, Ruby on Rails 7.0.4を使用しています。 eRuby とは まず仕様であるeRubyの話

    あの日見たerbを僕達はまだ知らない。
    manimoto
    manimoto 2022/12/01
    書きました。あのerbです。なれのはてブを作る際にRSSを元にHTMLを生成する必要があり「Railsでerb書き慣れてるしERBクラス使えば余裕やろ!」と思って使ってみたら「全然別物や…」となったのが執筆きっかけ。
  • Rails 5のAPIモードを使ってAPIを実装

    APIモードのおさらい 連載第1回でも紹介したAPIモードはRails 5の代表的な新機能の一つで、RailsアプリをAPI用途に特化させる仕組みです。新規RailsアプリをAPIモードで新規作成する場合、rails newコマンドに--apiオプションを指定して実行します。 APIモードで作成されたRailsアプリでは、各種ジェネレーターコマンド(rails g)の挙動が変わります。具体的にはビュー・アセットファイルが自動生成されなくなります。 チャットアプリに追加する新機能 チャット上で「/img rails」と入力すると、Google画像検索で「rails」と入力して1番目にヒットした画像がチャット上に表示される機能を追加します。 今回、Rails 5のAPIモードを使って新規作成するRailsアプリは、「rails」などの検索語句をgetパラメーターで指定すると、Google画像検

    Rails 5のAPIモードを使ってAPIを実装
  • 私的アンリーダブルコード―他人を発狂させるための 9 のテクニック

    コードはたいてい一度しか書かれませんが、何度も何人も読むことになります。 普段何気なく書いているコードが他人の時間と精神を削っているかもしれません。 そんなわけで、個人的に辛いなと思うことを 9 つ挙げてみました。共感してもらえるものもいくつかあるんじゃないかと思います。 実体にそぐわない変数名 見分けの付かない配列とハッシュの変数名 呼び出し元で true/false を指定するだけの引数 暗黙の実行順序 [] メソッドの定義・Array の継承 ハッシュの乱用 密結合した mixin 過剰な nil guard 条件によって異なる返り値の型 推薦図書 静的型付き言語を使うことで解消される問題もありますが、その選択肢はひとまずなしということで。 Ruby 前提になっていますが、他の言語にも言えることも多いと思います。 実体にそぐわない変数名 例えば Vehicle というクラスが定義され

    私的アンリーダブルコード―他人を発狂させるための 9 のテクニック
  • Ruby の HTTP リクエストを送る方法の性能比較 - Qiita

    HTTP リクエストの性能比較をさまざまな Gem などで行ってみた。 net-http 一番標準的な Net::HTTP を使ってみる。 require "net/http" 100.times do res = Net::HTTP.start("www.yahoo.co.jp") do |http| http.get "/" end res.body end

    Ruby の HTTP リクエストを送る方法の性能比較 - Qiita
  • 【Ruby】PythonプログラマーがRubyを触って感じたこと - 歩いたら休め

    Pythonプログラマーというか、元々Python(ときどきR、C言語)で数値シミュレーションをしていた学生が、就職してRubyでWeb開発を行うにあたって勉強したことを書き連ねていくだけの記事です。 もし自分と同じような立場の人(これから後輩としてもどんどん増えていくかも!)がいたら、「ここを押さえておけばRubyは問題なく書けるよ」と教えられるように書いておきます。というのも、レビューを行っていた先輩とのプログラミングのスキルとの開きがあり、先輩も私も「どこが分かってないのか説明できない」状態になってしまってお互いに困ってしまった経験があるからです。 RubyPythonはよく似ているのですが、思想や見た目で違う部分が多く、片方を勉強するともう片方の理解も深まります。 たまに2ちゃんねるのオカルト板である「見たことある世界によく似た異世界に迷い込んだ」みたいな感覚で、なかなか面白い経

    【Ruby】PythonプログラマーがRubyを触って感じたこと - 歩いたら休め
  • (あなたの周りでも見かけるかもしれない)インスタンス変数の間違った使い方 - Qiita

    (2021-8-28追記) この記事の改訂版を書いてみました。改訂版の方が易しい内容になっているので、プログラミング初心者の方はこちらを参考にしてみてください。 はじめに:「引数があるよりは、ない方が良い」? 先日、同僚の西見さん(@mah_lab)がこんな技術ブログを書いていました。 インスタンスメソッドとクラスメソッドはどのようにして使い分けるべきか?(Rubyの場合) 同じ内容を僕だったらどういうふうに書くかな~?と思って、ちょっと書き始めてみたんですが、わかりやすく実践的な説明をするのは意外と難しく、内容も西見さんのブログとほぼ同じになりそうだったので、途中で断念しました。 というわけで、インスタンスメソッドとクラスメソッドの使い分けが未だにあやふやだという方は、ぜひ西見さんのブログを読んでみてください! ・・・なんですが、1点だけ気になる点がありました。 それはインスタンスメソッ

    (あなたの周りでも見かけるかもしれない)インスタンス変数の間違った使い方 - Qiita
  • 初級者を脱したいRubyistが読むべき、今年のRuby本を紹介します。 - wolfmasa's blog

    この記事は、Ruby Advent Calendar 2015 の16日目の記事です。 勢いで、Advent Calendarに登録したのでネタを調べていましたが、人に誇るプロダクトなどもないので、Rubyに関して今年出た(or 私が読んだ)ものについてまとめてみます。 独断と偏見になってしまいますが、私のように文法やライブラリはある程度理解して、初級者から中級者へレベルアップしたい方にオススメしたい順に並べてみました。 さらに遡れば良いもたくさんあると思いますが(例:青木さんのRHG)、Rubyの仕様は常に変わっていくこともあって、比較的新しいの中でより有益なを見つけていくということも、大事だと思います。何より楽しいですし。 [★★★★★] Rubyのしくみ -Ruby Under a Microscope [★★★★★] メタプログラミングRuby 第2版 [★★★★☆] パーフ

    初級者を脱したいRubyistが読むべき、今年のRuby本を紹介します。 - wolfmasa's blog
  • Punditから考えるDRYな権限管理の設計方針 - Qiita

    TL;DR Web applicationを書いてると,たいてい業務ロジック実装のための分岐処理でコードが汚くなり,また色々な場所に同様な処理のコピペが発生する 権限管理用ライブラリであるPunditを使って業務ロジックにおける分岐処理を1箇所にまとめるときれいに整理できるケースがある 複雑なUser Roleベースの権限管理をするときはcancancanなどを使うべきで,目的に応じた使い分けが大事 書いていないこと Punditの詳しい使い方(コードベースが非常にシンプルでdocも充実しているので自分で読んだ方が早い) 他の権限管理ライブラリの使い方(筆者より優秀なエンジニアが書いた記事が沢山あるのでググった方がいい) 前置き Web applicationがある程度大きくなった時に生じる2大問題 ビジネスロジックの条件分岐でコードが汚れる問題 以下のようなビジネスロジックを実装するため

    Punditから考えるDRYな権限管理の設計方針 - Qiita
  • 雑なツイートをしてしまったばかりにrubyを高速化するはめになった俺たちは!

    逆に言うと、Rubyの文字列型の内部実装がropeになれば、freezeしてもしなくても変わらない速度が出るようになって、結局freezeする必要なんてなかったんやーで丸く収まるんじゃないの?と思いました #雑な感想 — Kazuho Oku (@kazuho) October 6, 2015とツイートしたところ、処理系の中の人から @kazuho 文字列を弄る話じゃなくて、文字列の identity の話なので、ちょっと関係ないかなぁ、と — _ko1 (@_ko1) October 6, 2015みたいなツッコミをもらって、うっすみません…ってなってRuby VMのコードを読むことになったわけです。 で、まあ、いくつか気になる点があったので手をつけてしまいました。 1. オブジェクト生成のホットパスの最適化 ホットスポットだとされていたところのコードを読んでると、オブジェクト生成の際に

  • [Ruby] Ruby 3.0 の特大の非互換について - まめめも

    タイトルは釣りです。すみません。Ruby 3.0 はかなり先の将来の話なので、最終的にどうなるかはわかりません。でも Ruby 3.0 に重大な変更が予定されているのは事実なので、一緒に考えて欲しいと思います。 immutable string literal Ruby 3.0 では文字列リテラルをデフォルトで immutable (破壊的変更不可) にする、という方針が『決定』しました。(Feature #11473: Immutable String literal in Ruby 3) つまり、次のようなプログラムが動かなくなります。(当チケットから少し改変して引用) sql = "SELECT #{sec_id}, pt.path, st.doc_count " sql << "FROM #{stats_tablename} AS st " #### ←ここで例外: can't m

    [Ruby] Ruby 3.0 の特大の非互換について - まめめも
  • 文章をCabochaで解析してグラフにして可視化する(歌詞可視化) - クフでダローバルな日記

    最近どうやら歌詞を可視化するのが流行っているようです。 何がおもしろくて朝の時間をこんなものにつぶしたんだと10時間前の自分を責めたい pic.twitter.com/Y8kffFm8gW— 御苑トンネル (@Tatawidepine) 2015, 9月 28 自然言語処理をすれば簡単に自動化出来るんじゃないかと思ったので、文章を与えると流れを可視化してくれるプログラムを組んでみました。 出来上がったサンプルがこちら 使ったもの Ruby CaboCha(係り受け解析器) graphviz(グラフ作成) gviz(graphvizのgem) 事前準備 CaboChaのインストール 僕は既にMeCabとかをインストールしてあったので超簡単でした。 $ brew install cabocha $ gem install cabocha-ruby graphvizのインストール これもいつだっ

    文章をCabochaで解析してグラフにして可視化する(歌詞可視化) - クフでダローバルな日記
  • Ruby on Rails ガイド:体系的に Rails を学ぼう

    Railsの仕組みを体系的に学べる大型コンテンツ Rails Guides に基づいた1,600ページ超えの大型リファレンスです。 プロダクト開発に役立つ実践的な知識が満載 Railsチュートリアルを完走し、プロダクト開発中の人に最適です。 全文検索やバージョン毎の検索にも対応 Proプランでは、さらに効率的な活用をサポートします。 このアイコンが付いているガイドは現在作業中 (WIP: Work In Progress) です。作業中のガイドはそれなりに有用ではありますが、不完全な情報やエラーが含まれている可能性があります。 はじめに Rails をはじめよう Railsのインストール方法と最初のRailsアプリケーションの作成に必要なすべてを解説します。 モデル Active Record の基礎 Active Recordの基礎となるモデル、データベースへの永続的な保存、Active

    Ruby on Rails ガイド:体系的に Rails を学ぼう
  • RubyからGoogle Analytics API を扱う"Legato"の使い方 - Qiita

    Legatoの使い方をかんたんにメモします。 LegatoはGoogle Analytics API を扱うためのライブラリです。以前メジャーだった今はメンテナンスされていないGarbとコンパチブルです。 通常データの取り扱い(コアレポーティングAPI) Legatoを使うとRuby的にGoogleAnalyticsのデータを取り扱えます。 以下クラスはAPI経由で取得するデータの定義です。metricsが指標で、dimensionsがデータの取得軸です。dimensionsによって分割されたデータが返ってきます。 class OrganicKeyword extend Legato::Model metrics :sessions, :bounces, :bounceRate, :exits, :exitRate, :pageviews, :screenviews dimensions

    RubyからGoogle Analytics API を扱う"Legato"の使い方 - Qiita
  • [*Ruby*] RubyでGoogle Drive APIを使ってファイル一覧取得&ファイルアップロード - Qiita

    はじめに 「Rubyによるクローラー開発技法」を読み終わって、クローラーを作ってみたくなりました。(まだ作ってません) 好きなジャンルの画像を集めてくれるものを作ろうと思ったものの、ローカルに画像がたまると嫌なのでよく使うGoogle Driveに上げといて欲しいと思って調べてみたらAPIがあるみたいなので使ってみました。 環境 MacBook Air(Yosemite) Ruby(2.1.2) 手順 1. Google Developers Consoleでプロジェクト作成とクライアントIDなどの取得 Google Developers Consoleにアクセスし、「プロジェクトを作成」を押下します。 「プロジェクト名」に好きな名前を付けます。 「プロジェクトID」はそのままでも大丈夫です。 APIと認証 > API を選択し、有効なAPIが以下のようになるようにします。 デフォルトでは

    [*Ruby*] RubyでGoogle Drive APIを使ってファイル一覧取得&ファイルアップロード - Qiita
  • Five Ruby Methods You Should Be Using

    There’s something magical about the way that Ruby flows from your fingertips. Perhaps that’s why it was once said that “Ruby will teach you to express your ideas through a computer.” And it’s most likely the reason that Ruby has become such a popular choice for modern web development. Just as in other languages, there are numerous ways to say the same thing in Ruby. I spend a lot of time reading a

    Five Ruby Methods You Should Be Using
  • JMeter使うのだるいなーと思ってたらruby-jmeterというRubyでテストプランを書けるツールがあった | mah365

    JMeter使うのだるいなーと思ってたらruby-jmeterというRubyでテストプランを書けるツールがあった。知らなかった(迫真)。 典型的なRailsアプリのテストプラン そういう訳で典型的なRailsアプリのテストプランを書いてみたのがこちら。 ユーザーログインページでCSRFトークンを取得し、常にHTTPヘッダにつけるようにする ユーザーログイン情報をクッキーに保存 といった典型的な処理を盛り込んでいます。あとはREADME.mdを読んでもらえれば大体の書き方が把握できるかと思います。 ちなみに、# Debugというコメントの下2行をコメントアウトしてもらうと、JMeter上でデバッグ用の出力を表示することができます。テストプランが上手く動かないときに、リクエストヘッダやレスポンスを確認するのに便利です。 で、これをコマンドラインで ruby sample.jmx.rb && j

    JMeter使うのだるいなーと思ってたらruby-jmeterというRubyでテストプランを書けるツールがあった | mah365
  • Domain Driven Rails

    Some of the patterns used while building Reverb.com's large codebase including concepts from DCI and Clean Architecture such as Use Cases, Roles, Events, and Policies.

    Domain Driven Rails
  • 一ヶ月、Rubyを本気で独学した結果(文系向け) - 30ruby記

    まともな文章にしたいのだけど、そうする余力がないので、記録のために箇条書きでメモ書きを残します。独学でRuby (on Rails)を学ぶために、まず初学者向けのまともな情報が少ないし、僕以上の事例はそういないと調べて思ったのと(自分で言ってすみません)、これから学ぶ人が増えるだろうから、その参考になればとも。 2015年5月20日 追記 → ※採用できたため募集終了。ありがとうございました。 開発メンバーを募集しています。意欲と能力を兼ね備えた若者を歓迎します。スキルは、この記事を書いた当時の僕くらいあればokです。 30ruby.hatenablog.com 2017年11月23日 追記 フロントエンジニアを募集します!やる気があって、実務経験あって、EdTech命として教育を根から変えていくというミッションに共感していっしょに走ってくれる方を探してます! www.wantedl

    一ヶ月、Rubyを本気で独学した結果(文系向け) - 30ruby記
  • Writing Fast Rubyというスライドが良い | mah365

    ちょっとしたコードの書き方でパフォーマンスが変わることがあります。リーダビリティを重視する向きからすれば小手先のテクニックに映るかも知れないのですが、リーダビリティを維持しながらちゃんとしたパフォーマンスを出すためにも、テクニックを知ることは大事なことだと思うのです。 結構違うもんですなー というわけで、そんなテクニックをまとめたスライドがWriting Fast Ruby。見ていて参考になったのでメモ。 たとえば引数に&blockをとってcallするよりも、yieldの方が5倍速い、とか、 def slow(&block) block.call end def fast yield end mapにブロックを渡すよりも、シンボルを渡す方が20%速い、とか (1..100).map {|i| i.to_s} (1..100).map(&:to_s) mapしてからflattenを呼び出すよ

    Writing Fast Rubyというスライドが良い | mah365
  • アンダースタンディング コンピュテーション

    書は計算理論をRubyでわかりやすく紹介する書籍です。コンピュータサイエンスの主要なテーマである「計算とは何か」という問いに対して、難しい数学の知識を利用をせず、Rubyを使って実際にプログラムを作りながら解説します。さらに、なぜこれらのアイデアが大切なのか、そしてそのアイデアは我々の日常的なプログラミングにどう関係していくのかを解き明かしていきます。日語版ではまつもとゆきひろさんによる「日語版まえがき」を収録。プログラミングの根底にある理論を学ぶことで、より広く深くプログラミングを考えたいプログラマ必携の一冊です。 監訳者によるサポートページ 目次 日語版まえがき はじめに 1章 Rubyひとめぐり 1.1 対話型 Rubyシェル 1.2 値 1.2.1 基データ 1.2.2 データ構造 1.2.3 Proc 1.3 制御フロー 1.4 オブジェクトとメソッド 1.5 クラスと

    アンダースタンディング コンピュテーション