サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大阪万博
qiita.com/jnchito
はじめに 問題です。次のプログラムを保存して実行したとき、ターミナルにはどのような結果が表示されるでしょうか? # fromからtoまでの連続した整数を配列として返す def numbers(from: 0, to: 10) (from..to).to_a end def main p numbers numbers = numbers(from: 3, to: 7) p numbers p self.numbers p numbers() end main
はじめに Rubyではif文の戻り値を変数に代入することができます。その場合、大きく分けて次のような2つのスタイルがあると思います。
はじめに HerokuにRailsアプリをデプロイすると、以下のようなトラブルがよく発生します。 ローカルでは表示されていた画像( app/assets/images/ に保存していた画像)が表示されない! 画像が表示されるはずのページで、"The page you were looking for doesn't exist."というエラー画面が出た! そこで「Heroku rails 画像 表示されない」のようなキーワードで検索すると、この問題の対処法が載ったページがたくさん表示されます。しかし、以下のような情報が載っているページは間違いです。 🚨これは間違い!! config/environments/production.rb を開き、 config.assets.compile = false の値を true に変更しましょう。 以下の対処法が載っている場合も多いですが、これ
はじめに Railsでモデルを作ると、テーブル定義上のid列(プライマリーキー)はデフォルトで自動的に連番が付与されるカラム(auto increment値)になります。 とはいえ、idにしたからといって必ずしも連番になるとは限りません。場合によっては「歯抜け(ギャップ)」が発生こともあります。 そのため、「idの最大値=そのテーブルの件数」になるとは限りません。 つまり、こういうデータが作成されることもありうる、ということです(たとえ一度もDELETEされなかったとしても)。 id name
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
Ruby on Rails Advent Calendar 2021の枠が空いていたので、あとから登録しました はじめに 個人的なプロジェクトになりますが、僕が翻訳しているRSpecの入門書「Everyday Rails - RSpecによるRailsテスト入門」を2022年前半にRails 7.0バージョンにアップデートしようと考えています。 そこでこの本の中で使っているサンプルアプリケーションをRails 7.0でゼロから作り直してみました。フロントエンド周りを中心に結構考え方が変わっている部分があったので、「ここでハマった!」とか「こういうポイントを押さえておくといいかも」という点をあれこれ書いてみます。 なお、Rails 7.0版のサンプルアプリケーションはまだ公開できる状態ではないので、公開はもうしばらくお待ちください🙏 今回作成したサンプルアプリケーションはこちらで公開してい
はじめに 🎄🎄🎄この記事はRuby Advent Calendar 2021 25日目の記事です🎄🎄🎄 Rubyは毎年12月25日にアップデートされます。 Ruby 3.1については2021年12月25日に3.1.0が正式リリースされました。 この記事ではRuby 3.1で導入される変更点や新機能について、サンプルコード付きでできるだけわかりやすく紹介していきます。 ただし、しっかり内容を確認する時間が取れなかった機能に関してはNEWS.mdの記載内容を転記するだけに留めています 本記事の情報源 本記事は以下のような情報源をベースにして、記事を執筆しています。 NEWS.md NEWS.mdに記載されている各種issueとそれに関連するdiff Ruby 3.1.0リリース プロと読み解く Ruby 3.1 NEWS - クックパッド開発者ブログ @pink_bangbi さん
この記事は僕が以前書いた「(あなたの周りでも見かけるかもしれない)インスタンス変数の間違った使い方」という記事の改訂版(というか、全面書き直し版)です。 はじめに:そのインスタンス変数、本当に必要ですか? 僕はフィヨルドブートキャンプでメンターをやっています。そこで提出物のコードレビューをしていると、間違ったインスタンス変数の使い方をよく見かけます。例を挙げるとこんな感じです(説明用のサンプルコードなので、処理自体に意味はありません)。 def run collect_data display_data end def collect_data # インスタンス変数にデータを詰める @data = ['a', 'b', 'c'] end def display_data # インスタンス変数を読み取って画面に出力する @data.each do |str| puts str.upcase
はじめに 僕はフィヨルドブートキャンプ(以下FBC)というプログラミングスクールでメンターをやっています。そこでよく生徒さんが書いたプログラム(課題の提出物)のコードレビューをよくやるのですが、5人に4人ぐらいの割合でコメントの書き方について同じような指摘をしています。 コメントの書き方ついては、すでにネットや書籍で同じような議論が山ほどありますが、この記事ではあらためて僕の考える「不要なコメントと必要なコメントの違い」について書いてみようと思います。 動画があります! この記事は以下の動画の内容を雑にテキストとして書き起こしたものです。動画で見たいという方は、以下の動画をご覧ください。(FBCの生徒さん向けに作った動画ですが、大半の内容はFBCの生徒さん以外にも役立つはずです) 不要なコメント=説明的なコメント(見ればわかるコメント) 「コードを見ればわかる内容」をわざわざコメントで説明
はじめに これはQiitaで開催されている「新人プログラマ応援 - みんなで新人を育てよう!」イベントの投稿記事です。 今回はメソッドの定義順に関する小ネタを書いてみようと思います。 なお、この記事はRuby版とJavaScript版の2部構成になっています。 JavaScriptを使ったコード例はRuby版のあとに載せています。 👉JavaScript版を読む おことわり この記事ではメソッドの定義順を変えてもエラーが出ないケースを議論の対象とします。 文法の制約上、特定の定義順で書かないと動かないケースは議論の対象としません。 Ruby版 メソッドの定義順は基本的に自由、だが・・・ メソッドの定義順は基本的に自由です。
はじめに これはQiitaで開催されている「新人プログラマ応援 - みんなで新人を育てよう!」イベントの投稿記事です。 前回は「学習用のプログラムと仕事で書くプログラムは何が違うか」というタイトルで、お勉強用に作るプログラムと仕事で書くプログラムはこんなところが違うんだよ〜、というお話を書いてみました。 今回の記事ではみなさんが無事にプログラマとして就職できたと仮定して、「○○さん、このタスクお願いね」と開発タスクをアサインされたときの対応手順を説明してみます。 この記事を書いている人 仕事で20年近くプログラムを書いているプログラマ 現在は株式会社ソニックガーデンでRubyプログラマをやっている Rubyの入門書「プロを目指す人のためのRuby入門」を出版している プログラミングスクール「フィヨルドブートキャンプ」のメンターでもある 対象読者 新卒、または業界未経験の中途入社で最近プログ
はじめに これはQiitaで開催されている「新人プログラマ応援 - みんなで新人を育てよう!」イベントの投稿記事です。 今回は「先輩(ベテランから2年目社員、上級生)からのアドバイス」を書いてみようと思います。 この記事を書いている人 仕事で20年近くプログラムを書いているプログラマ 現在は株式会社ソニックガーデンでRubyプログラマをやっている Rubyの入門書「プロを目指す人のためのRuby入門」を出版している プログラミングスクール「フィヨルドブートキャンプ」のメンターでもある 対象読者 現在プログラミングを学んでいて、将来プログラマ(特にWeb系)として就職したいと考えている人 もしくはこの春から新人プログラマとして仕事でコードを書き始める人 いずれも業界未経験の初心者プログラマを想定 僕が普段Railsを使っているため、この記事ではRailsを使う開発の現場を想定していますが、大
【Rails】Initialization autoloaded the constants ActionText::ContentHelper and ActionText::TagHelper 警告の解決パターンRubyRails DEPRECATION WARNING: Initialization autoloaded the constants ActionText::ContentHelper and ActionText::TagHelper. Being able to do this is deprecated. Autoloading during initialization is going to be an error condition in future versions of Rails. Reloading does not reboot the appl
たとえば、RailsのViewファイルとして次のようなblogs/edit.html.erbがあったとします。 <h1>Editing Blog</h1> <%= render 'form', blog: @blog %> <%= link_to 'Show', blog_path(@blog) %> | <%= link_to 'Back', blogs_path %> 5行目のblog_path(@blog)は/blogs/10のようなパスを生成するヘルパーメソッドです。(ここでは@blog.idの値が10だった場合を想定) このようにblog_pathの引数には通常、@blogのようなActiveRecordのインスタンスを渡すと思います。 ですが、blog_pathは次のように引数無しで呼びだしてもエラーにはなりません。
はじめに 2020年12月25日に、Rubyの新しいバージョンであるRuby 3.0がリリースされました。 一方、2017年11月に出版した書籍「プロを目指す人のためのRuby入門」(通称・チェリー本。以下、本書)は執筆当時最新だったRuby 2.4.1を対象にしています。 本書は紙の本であるため、簡単に内容をアップデートすることができません。しかし、何もしないとどんどん内容が古くなってしまい、「本の通りやってみたけど、今使っているRubyとなんか動きが違う」ということになってしまいます。 そこで新しいRubyのバージョンがリリースされて、本書の説明と異なる部分が出てきたときは、毎回ネット上でその差異を説明するようにしています。その説明を読めば、動きが違う部分があってもきっと落ち着いて対処できるはず、という算段です。 というわけで、この記事ではRuby 3.0で発生する「プロを目指す人のた
Rails 6に上げると”DEPRECATION WARNING: Initialization autoloaded the constants ActionText::ContentHelper, and ActionText::TagHelper.”のような警告が出るRubyRails 2021-2-18追記:新しく記事を書き直しました この警告に対処する最新の知見を以下のページに書き直しました。 今後はこちらのページを参照してください。 【Rails】Initialization autoloaded the constants ActionText::ContentHelper and ActionText::TagHelper 警告の解決パターン - Qiita ここから下の内容はRails 6.0リリース当初に書いた古い知見なので、これを参考にするのは筆者として推奨しません。
はじめに この記事はRuby Advent Calendar 2020 19日目の記事です。 さて、突然ですが、最近僕の娘がハイキュー!!というアニメのカードを集めるのにハマり始めました。 このカードは1枚110円で、全部で55種類あります。 当然ながら娘は全種類集めたい!と言います。 僕が調べた範囲では特にレアカードの設定はないようなので、「どのカードも出てくる確率は同じ」と仮定した上でカードを買い続けたら、いったいどれくらいの枚数を買うことになるんだろう?と思いました。 そこでRubyを使って簡単なシミュレーションプログラムを作ってみました。 require 'set' class Simulator NUMBER_OF_TYPES = 55 def self.simulate set_of_cards = Set[] all_types = (1..NUMBER_OF_TYPES).
はじめに Ruby 3.0ではRubyのコードに型定義情報を提供するRBSという仕組みが導入されます。 この記事では簡単なサンプルプログラムを通して、RBSとその周辺ツールの使い方や役割を説明します。 なお、説明する内容はあくまで初歩的な内容です。予めご了承ください。 動作確認時の実行環境 本記事の執筆時点ではまだRuby 3.0は正式にリリースされていません。 正式リリース時、または今後のバージョンアップによってこの記事の内容と実際の挙動が異なる可能性もあります。 本記事の執筆時に使用した実行環境は以下のとおりです。 Ruby 3.0.0dev (2020-11-13T16:46:08Z master 7826210541) [x86_64-darwin19] rbs 0.17.0 typeprof 0.4.2 steep 0.36.0 ただし、型チェックに関わる機能はgemとして提供さ
-- 名前と日付の総組み合わせを作る WITH dates_by_user AS ( SELECT name, CAST(dt AS DATE) AS date FROM generate_series('2020-11-22'::date, '2020-11-28', '1 day') AS dt CROSS JOIN (SELECT DISTINCT name FROM challenges) AS names ), -- 名前と日付に対応する得点を埋める(対応するレコードがなければ得点はNULL) challenges_for_each_day AS ( SELECT d.name, d.date, c.point, ROW_NUMBER() OVER (PARTITION BY d.name ORDER BY d.name, d.date) AS rowno FROM dates_
アンチパターン ソフトウェア開発におけるアンチパターン (英: anti-pattern) とは、必ず否定的な結果に導く、しかも一般的に良く見られる開発方式を記述する文献形式を言う。 アンチパターン - Wikipedia はじめに ローカル環境(開発環境)でRuby on Railsアプリケーションの開発をするとき、エラー(例外)が発生すると以下のようなエラー画面が表示されます。 しかし、本番環境にRailsアプリをデプロイすると、ローカル環境のようなエラー画面は表示されず、デフォルトでは"We're sorry, but something went wrong."というようなエラーメッセージが表示されます。 ローカル環境のエラー画面では、エラーが発生した行やスタックトレース等の情報が豊富に表示されるので、デバッグに役立ちます。 一方、本番環境ではそういった情報がまったく表示されないた
「こんなデタラメなドメイン、あるわけないやろ!」と思うかもしれませんが、自分はデタラメに付けたつもりでも意外とかなりの高確率でそのドメインは実在します。 実際、上の例で挙げたドメインをブラウザに入力すると、いずれも何かしらページが表示されます。 つまり、そのドメインは現在誰かが使っているということがわかります。 https://hoge.com/ http://testmail.com/ https://www.bbb.org (bbb.com から転送される) 実在するドメインだと何が困るの? 何らかの間違いでその実在するドメインに向けてメールが送信される可能性があります。 特に、ステージング環境などではSMTPの設定がバッチリ整っていて、実際にメールが送信されるリスクが高いかもしれません。 もちろん、メールが送信されても一致するユーザーがいないとそのまま破棄されるかもしれません。 です
(2020.7.30追記) RubyMine 2020.2からはアンチエイリアス設定がGreyscaleモードかNo antialiasingモードの2つしかなくなりました。 Subpixelモードがなくなったことにより、この問題が発生する可能性が低くなったものと思われます。 ちなみにSubpixelモードがなくなったのは「このモードをAppleがサポートしなくなったから」とのことです。 参考情報 IntelliJ IDEA 2020.2 EAP2 Is Here with Advanced Exception Stack Trace Analysis, Emoji Support on Linux, and More – IntelliJ IDEA Blog | JetBrains のコメント欄 Subpixel(LCD) text is slow with UI font in 202
僕はふだん前者のパターンで書いています。その理由は以下のとおりです。 後者のパターンより短く書けるから 'spec/fixtures/sample.csv'のようなパスが、プロジェクトルートから見た相対パスとして、ぱっと認識しやすいから 一方、後者のパターンで書く人の理由を聞いてみると、「実行環境によってはパスの区切り文字が/と限らないから」と答える人が多かったです。 これはおそらく、Windows環境でパスの区切り文字が\になることを意識しているんだと思います。 検証:"/"でパスを区切っても、Windows環境でちゃんと動く しかし、後者のパターンで書く理由が「Windows環境を意識しているから」なのであれば、その心配はおそらく無用です。 Windows環境のrails consoleで、先ほどのようなRails.root.joinの2つの書き方を比較した結果を以下に載せます。 (僕
対応は以上です。 Rails 6.1以上の場合(2022.5.27追記) Rails 6.1からはSameSite=Laxがデフォルト値になった関係でgemをインストールするだけでは機能しなくなりました(参考)。 Rails 6.1以降でも引き続き使う場合は、config/initializersなどで以下の設定も追加する必要があります。 rails_same_site_cookie gemがやってくれること rails_same_site_cookie gemをインストールすると、自動的に全cookieにSameSite=None; Secure属性が追加されます。 ただし、iOS 12とmacOS 10.14のSafariなど、SameSite=None; Secure属性を付けると不具合が発生するブラウザ(参考)に対してはこの属性を付与しません。 rails_same_site_co
はじめに テストコードを書くことは重要です。 テストコードがないアプリケーションよりもテストコードがあるアプリケーションの方が望ましいことは間違いありません。 ですが、テストコードも書き方を間違えると、アプリケーションが壊れているのに正しく検知できないテストを書いてしまう可能性があります。 この記事ではそんな「アプリケーションが壊れているのに正しく検知できないテスト」のコード例を「〜するべからず(〜してはいけない)」の形式で紹介し、その修正方法を説明していきます。 サンプルコードはRSpecで書いてます(でも他の言語でも考え方は同じはず) サンプルコードはRailsアプリケーションをRSpecでテストする場合を想定したものになっていますが、基本的な考え方自体は他の言語やテスティングフレームワークでも適用可能なはずです。 RSpecのイロハについて先に学んでおきたいかたは「使えるRSpec入
この警告の直し方を見ていきましょう! 歴史について少しだけ Ruby 2.7.0ではURI.escapeまたはエイリアスメソッドのURI.encodeを呼びだしたときに警告が出ます。これはあたかも新しく追加された警告のように見えますが、実際はなんと・・・10年以上も非推奨とされ続けていたのです!どうしても今までこの警告を目にしなかったんだろう?と不思議に思っている方へ。答えはこうです。これまではverboseモードでスクリプトを実行したときだけ表示されていました。そして、この仕様が最近変わりました。これがその理由です。 じゃあなんでURI.escapeは非推奨メソッドなの? 「URIをエスケープする」という概念は実はやっかいです。なぜならURIは多数の要素(pathやqueryなど)から成り立っており、その要素をすべて同じ方法でエスケープするわけではないからです。たとえば、#という文字につ
次のページ
このページを最初にブックマークしてみませんか?
『@jnchitoのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く