サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
円安とは
qiita.com/okuramasafumi
この記事について Ruby記事投稿キャンペーンということで、ちょっとした記事を書こうと思います。 rbenvとruby-buildについて この記事を読んでいる方の大部分はRubyのバージョン管理やインストールにrbenvとruby-buildを使っていることと思います。最初に明言しておくと、これらのツールから乗り換える必要は全くありません。 その上で、同じようなことをする別のツール、chrubyとruby-installを紹介しようと思います。なお、どちらも同じ方(postmodern氏)の作品です。 chruby chrubyはRubyのバージョンを切り替えるためのツールです。特徴としては、ディレクトリを切り替えたときのRubyバージョンの自動切り替えがオプションの機能であることなどが挙げられます(https://github.com/postmodern/chruby#auto-sw
はじめに この記事はRuby on Rails Advent Calendar 2022の14日目の記事です。 概要 この記事ではRailsのrenderメソッドを読み、内部で何が起きているのかを理解していきます。 動機 私は個人でAlbaというJSONシリアライザを開発しています。その際、Railsの機能に合わせて以下のような動作をさせるようにしました。
概要 タイトルの通り、Rubyでクラスメソッドを定義する方法に関する記事です。 動機 元々はクラスメソッド全般に関する記事だったのですが、調べているうちに書き方を色々思いついてしまったのでそちらをメインにすることにしました。 レギュレーション 文法要素については1つとして扱う メソッドを使うものについてはメソッドの名前ごとに1つとして扱う eval系の場合、文字列とブロックは同じ扱いになる 補足 ちゃんとクラスメソッドや特異クラスについて知りたい方は以下の記事をどうぞ! https://magazine.rubyist.net/articles/0046/0046-SingletonClassForBeginners.html 本編 1. クラス名スタイル 実は利用頻度が少ない気がします。
動機 この記事はもともとLegalForceさんで行われたイベントのために調べ物をしていたのでそれを再利用したものです。 私はRubyの最大の強みの一つはブロックの表現力だと思うのですが、この記事ではそんなブロックを(実は)引数に受け取るメソッド群を紹介したいと思います。 本編 但し書き 今回はコアクラス(String, Array, Hash)のみに絞って紹介しています。 明らかにブロックを受け取ると思われるもの(例:each系のメソッド)などは除外されています。 その他、明らかに使い途がないと個人的に思われたものも除外しています。 String String#gsub 個人的に意外だったものの筆頭は、gsubとgsub!がブロックを受け取ることです。以下のように使います。
動機 Rails Girlsのカリキュラムが時代に合わなくなりつつあるのでは、みたいな議論を複数人としたことがあるので、個人的な想いを書きたいと思いました。 TL;DR 「動き」のあるアプリケーションを作れるようにするといいんじゃないか。 本編 前提 まず、エンドユーザー(Rails Girlsの参加者の多くはこのタイプ、ここではアプリケーションの生産者ではなく消費者であるという意味合い)が利用するアプリケーション(特にウェブアプリケーション)の品質は年々向上しており、今やSPA(Single Page Application)を利用することすら当たり前の人もいる。 一方、Rails Girlsのワークショップで作るアプリケーションは伝統的なCRUDのアプリケーションであり、そこには現代的なアプリケーション作成における重要なパーツであるインタラクションが欠けている。 問題意識 Rails
動機 せっかくアドベントカレンダーの初日なので、rails newのオプションの解説をしようと思ったんですが、それだけだとありきたりなのでコードを読んでみることにしました。 前提条件 ソースコードはv6.0.1のタグが付いているもの(執筆時点の最新安定版)。 注意書き この記事は筆者がガチでコードを読みつつ書いたものです。順番の前後や過度のライブ感がありますがご了承ください。 とっかかり ここかなあ… module Rails module Command class NewCommand < Base # :nodoc: no_commands do def help Rails::Command.invoke :application, [ "--help" ] end end def perform(*) say "Can't initialize a new Rails appli
まえがき この記事はRails Girls Japan Advent Calendar 2018のために書かれた記事です。よって、想定される読者の中にはコミュニティに参加したことがないような方がいます。この記事はそういった人のコミュニティへの参加を促すために書かれました。 注意 以下の文では「コミュニティ=Rubyコミュニティ」を想定していますが、他の言語でも事情は同じはずです。 コミュニティに参加する3つの意味 私が考えるコミュニティに参加する意味は以下の3つです。 いずれも実体験です。 ブログ記事や実装にならない生の情報に触れられる いろんなバックグラウンドの人に話を聞いてもらえる 「すごい人」と同じ空気を吸える ブログ記事や実装にならない生の情報に触れられる これは、「情報はブログやGitHubで手に入れられる」という主張への簡単な反論となっています。 単純な話で、ある人が100の思
概要 東京の地域Rubyコミュニティについて雑にまとめてみました。 地名が名前についていないもの(例:よちよち.rb)や東京以外(Saitama.rbなど)は除外してあります。 内容が間違っているところもあるかもしれません。予めご了承ください。 なお、順番に意味はありません。 形式 URL 主な会場 主な開催日 コメント 本題 Asakusa.rb https://asakusarb.esa.io/ 株式会社永和システムマネジメント、株式会社Speee 毎週火曜日 雑談形式。Rubyコミッターが多数。 Shinjuku.rb https://shinjukurb.connpass.com/ Repro株式会社 第4水曜日 Ruby以外のトピックも幅広く取り扱う。参加者と発表者との対話を重視しているのが特徴的。 Shibuya.rb https://shibuyarb.doorkeeper.
概要 名前 AwesomePrint URL 解説 前回に引き続きコンソールで使うgemを紹介。今回はコンソールでの出力をより良くしてくれるawesome_print。 機能 見たほうが早い。 機能(詳細) Rubyコンソールの出力を見やすく整形してくれる。デフォルトで色もつくし、インデントも揃う。ActiveRecordモデルであっても綺麗に出力してくれる。更に配列であればインデックスも補ってくれる。 つまり、見たほうが早い。 使い方
config.autoload_paths += %W( #{Rails.root}/lib ) こんな感じのコードありますよね。 これだと、たしかにautoloadはされるんですが、eager_loadはされないのです。なので、eager_loadが有効になっている本番環境などで、状況によってはNameErrorが起きてしまう。 代わりに、
概要 この記事では、RSpecにあまり馴染みがない人にもわかりやすいように、RSpecの理想的な書き方(=コーディングルール)を説明しようとしています。 書いてあることは個人的な見解です。理性的な議論を歓迎します。 友人に語っているような文体ですのでお気をつけください。 動機 俺はみんなにRSpecを書いてほしかったんじゃない。 いいRSpecを書いてほしかったんだ(´・ω・`) なぜかバリデーションだけ一生懸命にテストされていて自作の30行近いメソッドにテストがないとか、10行近いbeforeブロックがコピペされまくってるとか、そういうのはさ、見たくないんだ。 あと、http://betterspecs.org/ は読もう。日本語版もあるし。そこに書いてあることはここでは繰り返さないので、あしからず。 総論 はじめに ここから先は読まなくてもいいからこれだけは読んでほしい。 itブロック
tl;dr wtfを使おう 概要(というか全部) pryにはwtfというコマンドがあります。これは最後に起こったエラーのバックトレースを数行表示してくれるものです。これだけでも便利ですが、バックトレースが全部欲しいときはwtf!?のように、!や?を後置するといけます。しかもこれ、いくつでも大丈夫です。なので、 wtf!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
はじめに―デフォルトの怖さについて Railsは文字通り「レールに乗る」ときに最大の効率を発揮するフレームワークです。CoC(Convention over Configuration)は今やRailsのみならず各所で用いられる概念となっています。これはもちろん圧倒的な量のxml設定ファイルに比べれば進歩ですが、一方で気になることもあります。それはデフォルト設定の重みがさらに増しているということです。 多くの人はソフトウェアをあまりカスタマイズせずに使います。ほとんどのソフトウェアは設定項目を最低数個、多いものでは数百個持っていますが、デフォルトでも「ある程度」動くものがほとんどなため、カスタマイズの必要を感じない人が多いのかもしれません(個人的にはgitやtmuxなどは設定を工夫するとかなり便利になるのにやっていない人が多い印象)。 さて、RailsはそのCoCを強調する姿勢ゆえになおさ
導入 Gitはとても便利なツールです。ですが、「これをやったら無意味だろ」「せっかくのGitが台無し」「むしろ開発の妨げ」的なこともいくつか存在します。ここではそんな「べからず」集の一部をご紹介します。 ケース1:ブランチを使わない 深刻度:論外 修正難易度:とても易しい それ、SVNでやりなよ度:最大 コメント:トップバッターがいきなりアレですが、要はブランチを使いましょうということです。Gitの特徴としてマージが比較的容易であるという点が挙げられます。じゃんじゃんブランチを作り、マージしましょう。 ケース2:ブランチ名がhogeやBug fixだらけ 深刻度:中 修正難易度:易しい 身にしみる度:中 コメント:ブランチを作るのはいいのですが、ブランチ名にも変数名と同じく気を遣いましょう(変数名、気をつけてますよね?)。当たり前ですが、同じ名前のブランチを複数作ることはできません。まあ、
導入―いかに被害なくうざいいたずらをするか PCをログアウトせずに席を立ってしまった人に対していたずらをするというのは、誰しも考えたことがあるでしょう。しかし、実際には被害を出さずにいたずらを完遂するのは以外と大変です(被害というのはファイルの増加等も含みます)。一方で、単にlsをエイリアスにする程度ではいたずらとしては面白くない。そこで、被害を出さずに如何にうざいいたずらをするか、というのが今回の話題です。 尚、プログラマに対して行ういたずらであるのと個人的な好みから、いたずらはシェルで行います。 sayコマンドと無限ループ Mac限定ですが、sayというコマンドがあります。これは引数を音読してくれるコマンドですが、これを無限ループと組み合わせるととてもうざいのではないか?と思いつきました。
前回からだいぶ間が空いてしまいましたが、今日こそExコマンドについて、あんまりVimが得意でないそこのあなたのために書きます(得意な方は間違っていたらツッコミを…) Exコマンドの基本 Exコマンドは、Vimを一度でも使ったことがある人なら必ずお世話になっています(その意味で、使用頻度はノーマルモードの次、ヘタしたらインサートモードより上ということもありえます、文字を消すだけならインサートモードに入る必要もないので)。そう、Vimを閉じるときに使う:qです。あれは:quitの省略形ですが、立派なExコマンドです。 Exコマンドを入力するには:をノーマルモードで押します。すると画面の一番下にカーソルが移動するので(コマンドラインといいます)、そこにコマンドを入力してEnterを押せばコマンドが実行されます。アラ簡単。 置換を試す では、最も使われるコマンドの一つであろう、substitute
.pryrc Rubyistの皆さんはもうすでにPryを使っていると思います。が、Pryの真の力は~/.pryrcをカスタムすることで発揮されます。ファイルがない人は作りましょう(5秒)。 ~/.pryrcの内容は、Pryのセッションが開始されるたびに実行されます。たくさんのことができますが、今回はプロンプトを改良することに絞ります。 Pry.config.prompt Pryのプロンプトの実体はPry.config.promptで、文字列または文字列を返すProcオブジェクトを指定できます。プロンプトを動的に変更したい場合はProcを使うのがいいでしょう。 ところで、Pryを使っていると、たまに今のRubyのバージョンがいくつか忘れてしまうことがありますね?まあ、puts RUBY_VERSIONすればいいんですけど、どうせならプロンプトに表示しましょう。pryrcに以下を記述してくださ
class Foo private def bar puts "Don't call me!" end end Foo.new.bar #=> NoMethodError: private method `bar' called for #<Foo:0x007fe1232991c0> 一方、Rubyにはsendというメソッドがあって動的なディスパッチが可能となっていますが、これはprivateなメソッドも呼べてしまいます。
まえがき 前回しれっとバリューオブジェクトなる単語を使ったのですが、ここで一度意味を整理しておきたいと思ったのでまとめます。 バリューオブジェクトとは何か 文字通り、バリューつまり値を表現するためのオブジェクトをバリューオブジェクトと呼びます。 でもこれだけだと、問題が「値とは何か」に置き換わるだけですね。では、アプリケーション内で「値」が持つべき特性を考えてみましょう。 同じ値は等しいものとして扱われる 異なる値同士は何らかの方法で比較できる 異なる値は異なるものとして扱われる(イミュータブル) 以下では、具体例としてMoneyクラスを使います。このクラスは金額と通貨単位を持っています。下に一番素朴な実装を示します。 # 素朴な実装 class Money attr_accessor :amount, :currency def initialize(amount, currency)
背景 Tmux 1.9で、new-windowその他の挙動が変更されました。新しく作られたウィンドウやペーンは、すべてホームディレクトリから始まるようになったのです。個人的には、new-windowに関してはこの挙動のほうが好ましい場合もあるかなと思います(別プロジェクトの作業環境を作る場合などは一旦ホームディレクトリに戻るのは合理的です、そしてnew-windowを使う場合はプロジェクトを変更するケースも多いでしょう)。しかし、split-windowに関しては納得できませんでした。通常ウィンドウを分割する場合、同じプロジェクトで複数のペーンを使いたいケースがほとんどではないでしょうか。ならば、同じディレクトリに留まっていてほしい。 やってみた split-windowには%と"がバインディングされているので、それを変更します。 # 1.9 changed the behaviour o
はじめに 調べ物をしていたら、複数カラムをバリューオブジェクトに構成することで仮想的に一つのカラムとして扱う、composed_ofなるものを見つけたので備忘録します。 住所-よくあるパターン class User attr_accessor :city_address, :town_address, :building_address def address city_address + town_address + building_address end end attr_accessorの部分は実際にはカラムになってると思ってください。 上のパターンにはいくつかの問題があります。 addressのような整形用メソッドがモデルを汚してしまう 本来意味を持つのはaddressなのに、メソッドで返ってくるのは単なる文字列 一旦addressを取得しても、そこからcity_addressを
よろしい、あなたはたまにVimを使う必要があるんだけど、いつもわけがわからず、なんとかしてインサートモードに入るので精一杯。で、Vimを終了させられず、やり方をググっている、と…そんなあなたのためにこの記事を差し上げましょう。 最低限覚えてほしい3つのコマンド i => インサートモードに移行 esc => インサートモードから脱出 :wq => 保存して終了 そう、たったこれだけ。 …なわけないでしょ! 確かに、上の3つのコマンドは必ず使うものです。しかし、iとescを往復している限り、あなたは永久に進歩しません。 インサートモードは最悪 大事なことなので2回言います、 インサートモードは最悪です。インサートモードではVimは単なるメモ帳になってしまいます。どうせVimを使うなら、Vimらしく使ったほうが精神衛生上よろしいはずです。 ノーマルモード 名前の通り、普通、Vimはノーマルモー
「正規表現をきちんと学ぶ気はない、でも仕事では使いたい!」とかお思いの欲張りなあなたのための記事です。 正規表現の定義 パターンとターゲットとなる文字列(以下 対象)をマッチさせます。 (ホントのところはウィキペディアとかで調べてね!) パターンの構成 【文字+文字の数(以下 量化子)】×n 覚えるべき記号(メタ文字) たったの 6つです。 ^ => 対象の始まり $ => 対象の終わり . => どんな文字でもいいから、1文字 以下は量化子です。 * => 直前の文字がいくつあっても、なくてもいい + => 直前の文字がいくつあってもいいけど、ないとダメ ? => 直前の文字はないか、1つだけ なお、これらの文字を記号としてではなく文字としてそのまま扱いたい場合、\でエスケープできます。 文字クラス 文字は普通にaとかけばaにマッチします。が、複雑なマッチをしたいときは文字クラスを使いま
(※Vim使いじゃない人にはよくわからんかもしれませんが、最後までお付き合いください) 皆さんはVim、大好きですよね?Rails、大好きですよね?ということは、Rails.vim、大好きですよね? というわけで、今日は Rails.vim のご紹介…なんですが、基本的な説明はすでにたくさん良いものがあります(日本語でしたらこちらなど)。 ここで私が屋上屋を架してもしょうがない…そこで、探しても日本語情報がなかった、projectionsという機能について書くことにします。 最小限の前提知識 まず、今回の説明に必要な最低限のことを説明します。「そんなの知ってるぜ!」っていうそこのアナタは次のセクションまで飛んでしまいましょう! Rails.vimには Alternate なファイル、 Related なファイルという概念があります。Alternateなファイルとして扱われるのは主に対応する
このページを最初にブックマークしてみませんか?
『@okuramasafumiのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く