タグ

ブックマーク / qiita.com/jnchito (35)

  • 【Rails初心者向け】ブランチを切り替える前に気を付けたいDBマイグレーションの注意事項 - Qiita

    はじめに Railsはとても便利なwebアプリケーションフレームワークです。 gitも非常に便利なソースコード管理ツールです。 この2つのツールがあれば、初心者でも効率良くwebアプリケーションを開発できます。 ただし、学習用の小さなアプリケーションを一人で開発しているときはブランチはひとつかふたつで十分ですが、業務などで大きなアプリケーションを複数人で開発する場合は、複数のブランチで並行して開発が進める必要が出てきます。 こういうケースではデータベースマイグレーションを正しく理解し、正しく扱わないと、開発環境やソースコードが混沌としてきます。 Rails初心者の多くはこうした知識を持たないまま、チーム開発に参加しがちです。 この記事では「学習用の小さなRailsアプリケーション」を卒業し、「チームで開発する大きなRailsアプリケーション」に足を踏み入れる前に知っておくべき、データベース

    【Rails初心者向け】ブランチを切り替える前に気を付けたいDBマイグレーションの注意事項 - Qiita
  • 【新人プログラマ応援】Railsにおける良いコントローラ、悪いコントローラについて - Qiita

    TL;DR(長いので最初にまとめ) scaffoldと全く同じ、もしくはscaffoldに限りなく近いコントローラが良いコントローラ fatコントローラは悪いコントローラ。その反対でskinnyなコントローラ(薄いコントローラとも言う)を目指す コントローラ内でtransactionやrescueを書かない(fatになるし、scaffoldからも乖離する) BlogsControllerならBlogクラスのインスタンスだけをインスタンス変数にセットする メールはコントローラで送信する(EメールはSMTPを通じて届けられるviewと考える) はじめに RailsはMVC(Model-View-Controller)アーキテクチャを採用しています。 しかし、ロジック自体はやろうと思えばモデルでもviewでもコントローラでも、どこでも書くことができます。 特に、プログラミング初心者の方はついつい

    【新人プログラマ応援】Railsにおける良いコントローラ、悪いコントローラについて - Qiita
  • 「アプリケーションが壊れているのに検知できないテストコード」を書かないようにするための、べからず集 - Qiita

    はじめに テストコードを書くことは重要です。 テストコードがないアプリケーションよりもテストコードがあるアプリケーションの方が望ましいことは間違いありません。 ですが、テストコードも書き方を間違えると、アプリケーションが壊れているのに正しく検知できないテストを書いてしまう可能性があります。 この記事ではそんな「アプリケーションが壊れているのに正しく検知できないテスト」のコード例を「〜するべからず(〜してはいけない)」の形式で紹介し、その修正方法を説明していきます。 サンプルコードはRSpecで書いてます(でも他の言語でも考え方は同じはず) サンプルコードはRailsアプリケーションをRSpecでテストする場合を想定したものになっていますが、基的な考え方自体は他の言語やテスティングフレームワークでも適用可能なはずです。 RSpecのイロハについて先に学んでおきたいかたは「使えるRSpec入

    「アプリケーションが壊れているのに検知できないテストコード」を書かないようにするための、べからず集 - Qiita
  • 【初心者向け】テストコードの方針を考える(何をテストすべきか?どんなテストを書くべきか?) - Qiita

    はじめに 「テストコードを書きましょう」とはよく言われるし、テストコードが大事だってことも理解できるんだけど、何をテストしたらいいの?どんなテストを書いたらいいの?と迷っている初心者プログラマさんは意外と多いのではないでしょうか? そんな方たちに向けて、この記事では僕が普段意識しているテストコードの方針を紹介します。 おことわり 来であれば具体的なコード例も豊富に入れたいところなのですが、かなり時間がかかってしまうので、いったん文章メインで記事を公開します。 もしかすると、そのうちコード例も一緒に盛り込んだ「リッチバージョン」を公開するかもしれません。 この記事の前提条件 この記事ではあくまで、「今現在、筆者が仕事で書いているテストコードの方針」です。 そのため、状況が異なると適用しづらい方針も出てくるかもしれません。 筆者は以下のような現場でコードを書いています。 月額定額で、お客様と

    【初心者向け】テストコードの方針を考える(何をテストすべきか?どんなテストを書くべきか?) - Qiita
  • Rails❤️SQLのサンプルコード #railsdm - Qiita

    Rails Developers Meetup 2017で発表した「Rails❤️SQL」のサンプルコードです。 スライド スライドはこちらにあります。この記事とあわせてどうぞ。 Rails❤️SQL #railsdm // Speaker Deck 1. ちょっと凝った検索条件 Formモデル target_none?やxxx_selected?は独自のprivateメソッドです(コード例は省略)。 class ProjectSearchForm include ActiveModel::Model attr_accessor :keyword, :project, :customer, :member def result scope = Project.all if keyword.present? conditions = [] if target_none? || project

    Rails❤️SQLのサンプルコード #railsdm - Qiita
  • Ruby 2.5で発生する「プロを目指す人のためのRuby入門」との差異について - Qiita

    はじめに この記事は書籍「プロを目指す人のためのRuby入門」に掲載できなかったトピックを著者自らが紹介するアドベントカレンダーの25日目(最終日)です。 文に出てくる章番号や項番号は書籍の中で使われている番号です。 今回はRuby 2.5で発生する「プロを目指す人のためのRuby入門」との差異を紹介します。 必要な前提知識 「プロを目指す人のためのRuby入門」の第7章、第9章、第11章、第12章を読み終わっていること。 「プロを目指す人のためのRuby入門」(以下、書)はRuby 2.4系を対象にして執筆されています。書は紙のなので、簡単に内容をアップデートすることができません。しかし、何もしないとどんどん内容が古くなってしまい、「なんか今使っているRubyと動きが違う」ということになってしまいます。 そこで新しいRubyのバージョンがリリースされて、書の説明と異なる部分が出

    Ruby 2.5で発生する「プロを目指す人のためのRuby入門」との差異について - Qiita
  • 【短命に終わった】国民の祝日.csvをパースして変換するRubyプログラムとコード解説動画 - Qiita

    はじめに 1週間ほど前、内閣府の「国民の祝日」CSVがひどい、みたいな話が話題になっていました。 参考: 【悲報】内閣府の「国民の祝日」CSVがひどいと話題に なぜ「ひどい」と言われていたのかというと、普通のプログラマが期待する「日付と名前が上から下に並ぶCSV」ではなく、「2016年の列 => 2017年の列 => 2018年の列」のように年単位で列方向(横方向)に繰り返すフォーマットになっていたからです。 (しかも一番下に「月日は表示するアプリケーションによって形式が異なる場合があります。」みたいな注意書きが入ってる!) まあ、ひどいと言えばひどいんですが、これを扱いやすいフォーマットに変換するプログラムを作るのはなかなか面白そうだなと思いました。 というわけで、そんなプログラムを作りました! 国民の祝日.csvをパースするプログラム、とりあえずコードは書いた。https://t.co

    【短命に終わった】国民の祝日.csvをパースして変換するRubyプログラムとコード解説動画 - Qiita
  • サンプルコードでわかる!Ruby 2.4の新機能と変更点 - Qiita

    はじめに 2016年9月にRuby 2.4のpreview2が、11月にpreview3が、12月11日にrc1がリリースされました(参考1、参考2、参考3)。 僕は早速インストールして新機能を試してみましたが、みなさんはいかがでしょうか? というわけで、この記事では僕が実際に動かして確認したRuby 2.4の変更点や新機能をサンプルコード付きでまとめます。 この記事は大きく分けて次のセクションに分かれています。 文法上の変更点 後方互換性が失われる変更点 パフォーマンス改善 オブジェクト全般の新機能 主に数値に関連する新機能 主に文字列・正規表現に関連する新機能 主に配列・ハッシュに関連する新機能 ディレクトリやファイルに関連する新機能 その他の標準ライブラリに関連する新機能 スレッドに関連する新機能 なお、Ruby 2.4は2016年12月25日にリリースされる予定です。 記事はrc

    サンプルコードでわかる!Ruby 2.4の新機能と変更点 - Qiita
    clavier
    clavier 2016/09/12
  • Arelでクエリを書くのはやめた方が良い5つの理由

    はじめに:Arelって何? みなさん、Arel(アレル)ってご存知ですか? ArelはActive Recordの内部で使用されるSQL生成ライブラリです。 Railsのクエリの書き方をググると、ときどきArelを使った実装例が見つかるので、見たことがある、もしくは何度か使ったことがある、という人もいると思います。 Arelをよく知らない人のために、Arelの利用例をちょっと見てみましょう。 たとえば「コメント文中に、"ruby"が含まれるユーザープロフィールを検索したい」という場合、Rails標準のクエリインターフェースを使うと条件部分のSQLを文字列で書く必要があります。(PostgreSQL環境を想定) Profile.where( "profiles.comment ILIKE ?", "%ruby%" ).to_sql #=> SELECT "profiles".* # FROM

    Arelでクエリを書くのはやめた方が良い5つの理由
  • 初心者歓迎!手と目で覚える正規表現入門・その3「空白文字を自由自在に操ろう」 - Qiita

    はじめに みなさんこんにちは! この記事は「手と目で覚える正規表現入門」の第3回です。 この連載記事は「知識ゼロからでも理解できる」「実践的なサンプルを提供する」「自分の手と目で動きを確認できる」をモットーにした、正規表現の入門記事です。 今回は行頭や行末といった「位置」を表す正規表現や、タブ文字や改行文字といった目に見えない空白文字を操作する方法を説明します。 対象となる読者 記事は正規表現の予備知識が全くない「正規表現初心者」を対象としています。 ただし連載記事なので、読者のみなさんは過去の記事で紹介した知識をすべて理解できている、という前提で進めます。 まだ第1回、第2回の記事を読んでない人は、先にそちらを読んでからこの記事に戻ってきてください。 初心者歓迎!手と目で覚える正規表現入門・その1「さまざまな形式の電話番号を検索しよう」 - Qiita 初心者歓迎!手と目で覚える正規表

    初心者歓迎!手と目で覚える正規表現入門・その3「空白文字を自由自在に操ろう」 - Qiita
  • Railsでモデルクラスの名前をネームスペースとして流用してはいけません(warning: toplevel constantが発生します) - Qiita

    2019.8.21追記:Ruby 2.5からはこの問題が発生しなくなりました Ruby 2.5からは定数探索のルールが変わったため、この記事で書いているような問題は発生しなくなりました。 参考:サンプルコードでわかる!Ruby 2.5の主な新機能と変更点 Part 1 - Qiita Ruby 2.5環境だと、この記事で使用したテストケースはどちらも正常に実行されます。 # Ruby 2.5環境 + Rails 5.2で全specを実行した場合 $ bundle exec rspec blogs_controller_spec.rb loaded BlogsController loaded staff/blogs_controller_spec.rb loaded Staff model loaded Staff::BlogsController loaded Randomized wi

    Railsでモデルクラスの名前をネームスペースとして流用してはいけません(warning: toplevel constantが発生します) - Qiita
  • 初心者歓迎!手と目で覚える正規表現入門・その1「さまざまな形式の電話番号を検索しよう」 - Qiita

    はじめに Qiitaをご覧になっているエンジニアのみなさん、正規表現は使いこなせてますか? 正規表現が使えるととっても便利ですよね! あれ?そちらの方、「ぼく、正規表現ようわからへん・・・」って小さくなってませんか?? 大丈夫です!そんなあなたのために、この記事を書きました。 知識ゼロからでも正規表現を学べるようにやさしく説明しているので、とりあえずこの記事を最後まで読んでみてください。 今は \d{2,5}[-(]\d{1,4}[-)]\d{4} が謎の呪文にしか見えなくても、最後まで読めばきっと意味がわかるようになっているはずです! 対象となる読者 記事は正規表現の予備知識が全くない「正規表現初心者」を対象としています。 正規表現は便利だってよく聞くけど、意味不明な呪文にしか見えなくてなんか怖い 正規表現を勉強しようと何度か頑張ったけど、結局よくわからなくて実務で活用できていない と

    初心者歓迎!手と目で覚える正規表現入門・その1「さまざまな形式の電話番号を検索しよう」 - Qiita
  • サンプルコードでわかる!Ruby 2.3の主な新機能 - Qiita

    はじめに Ruby 2.3が2015年12月25日にリリースされました。 そこでこの記事ではRuby 2.3の主な新機能を紹介していきます。 対象となるバージョン 以下のとおり、この記事では ruby 2.3.0 を使っています。 参考文献 今回紹介するサンプルコードは下記のサイトにあったコードをベースにしています。 New features in ruby 2.3 - BlockScore Blog ただし、実行結果を確認するために Minitest を使ったり、コードをいくつか変更したりしています。 サンプルコードはGitHubにあります この記事で使ったサンプルコードはGitHubに置いてあります。 興味のある方は手元で動かしてみてください。 JunichiIto/ruby-2.3-sandbox それではここからRuby 2.3の新機能を紹介していきます。 深い階層にあるハッシュの

    サンプルコードでわかる!Ruby 2.3の主な新機能 - Qiita
  • Railsアプリケーションにおけるエラー処理(例外処理)の考え方 - Qiita

    はじめに Railsアプリケーションを格的に作り込んでいくと、「エラー」とは無縁ではいられません。 しょうもないバグでエラーが発生することもありますし、ほとんど不可抗力ともいえるような大規模なネットワーク障害でエラーが発生することもあります。 エラーの種類がなんであれ、エラーが起きた場合は「原因を素早く特定し、速やかに復旧させること」と「あるエラーが引き金になって、さらに大きなエラーに引き起こさないようにすること」が重要です。 エラー処理を適切に実装していれば、原因の特定や復旧もすばやくできますし、さらに大きなエラーを引き起こす可能性も少ないです。 また、ソースコードも比較的シンプルに保てます。 逆にエラー処理が不適切だと原因の特定に時間がかかったり、異常なデータがどんどん増えてさらに大きなエラーを引き起こしたりします。 ソースコードにも無駄に複雑な処理フローや条件分岐がたくさん出てきて

    Railsアプリケーションにおけるエラー処理(例外処理)の考え方 - Qiita
  • Rails 5 + ActionCableで作る!シンプルなチャットアプリ(DHH氏のデモ動画より) - Qiita

    【注意!】この記事はRails 5.0.0.beta1を対象にしています。最新のRails 5では仕様が変わっている可能性もあるので注意してください。 はじめに 先日、Rails 5のAction Cableを使ったシンプルなチャットアプリの作り方をDHH氏がYouTubeで公開していました。 Rails 5: Action Cable demo - YouTube 動画を見ながら僕もコードを写経してみたので、その内容をこちらで紹介してみます。 なお、ここで紹介するのはコードだけで、DHH氏の発言は完全に再現していません。 発言内容を確認したい人はオリジナルの動画をチェックしてみてください。 チャットアプリの完成形 今回は下のような非常にシンプルなチャットアプリを作成します。 ソースコード 今回作ったコードはGitHubにアップしています。 JunichiIto/campfire コードを

    Rails 5 + ActionCableで作る!シンプルなチャットアプリ(DHH氏のデモ動画より) - Qiita
  • Rails 5.0で追加される主な新機能(Ruby on Rails公式ブログより) - Qiita

    はじめに Rails 5.0.0.beta1が2015年12月18日にリリースされました。 また、それにあわせてRuby on Railsの公式ブログに主な変更点がまとめられています。(投稿者はあのDHH氏のようです) Rails 5.0.0.beta1: Action Cable, API mode, Rails command beta1がリリースされたということは、Rails 5.0の正式リリースもそろそろ近いということです。 (ちなみにRails 4.0ではbeta1の4ヶ月後に正式版がリリースされました。) Railsユーザーであれば、みなさん早かれ遅かれRails 5.0を使うことになると思うので、事前に予習しておきましょう! というわけで、上記の公式ブログの内容を翻訳してみました。 これを読めばRails 5.0でどういう変化が起きるのか、だいたい理解できるはずです! 翻訳の

    Rails 5.0で追加される主な新機能(Ruby on Rails公式ブログより) - Qiita
  • Rails開発におけるwebサーバーとアプリケーションサーバーの違い(翻訳) - Qiita

    はじめに 先日スタック・オーバーフローでこんな質問に回答しました。 webサーバー、アプリケーションサーバー、Rackといった仕様や概念と、WEBrick、Unicorn、Pumaといった実装の関係が頭の中で結びつきません 質問者の方はwebサーバー、アプリケーションサーバー、Rack、Unicorn、Pumaと言った用語や概念の理解がこんがらかっているように見えたので、このあたりをきれいに説明している記事を探していたところ、以下の記事を見つけました。 A web server vs. an app server - Justin Weiss スタック・オーバーフローでは記事の一部を抜粋して「ざっくり翻訳」したのですが、それだけで終わらせるのはもったいない気がしたので、Qiitaには全文を翻訳して載せておこうと思います。 これを読むと、あなたもwebサーバーとアプリケーションサーバーの違い

    Rails開発におけるwebサーバーとアプリケーションサーバーの違い(翻訳) - Qiita
  • 個人的な良い記事のガイドライン = 2ヶ月前の自分が泣いて喜ぶような記事を書く - Qiita

    はじめに 昨日、こちらの記事を拝見しました。 良い記事を書くためのガイドライン - Qiita:Support 上の記事は「あなたの知識が他の誰かの役に立つようにするため」のQiita公式のガイドラインです。 これを読んでると「うんうん、なるほど。そうだよねー」と思うところばかりでした。 それにかこつけて、僕もどういうことを考えながらブログやQiita記事を書いているのかを紹介してみようと思います。 何を考えながら書いているのかというと、この記事のタイトルにある通りです。 まあ「2ヶ月前」っていうのは適当で、「昨日」でもいいし、「2年前」でもかまいません。 要するに「2ヶ月前の自分」=「その知識を知らなかった頃の自分」ということです。 技術記事を書くときは、自分の書いた記事を過去の自分に見せたときに、 「あー、なるほど!最初っからそう説明してくれたらすぐわかったのに!!」 と大喜びしそうな

    個人的な良い記事のガイドライン = 2ヶ月前の自分が泣いて喜ぶような記事を書く - Qiita
  • Bundler バージョン1.10がリリースされました(翻訳) - Qiita

    はじめに 日、Bundler 1.10.5 がリリースされました。 このバージョンは新機能が追加されただけでなく、最近Rubyの開発現場を混沌とさせていたBUNDLED_WITH問題を改善するための変更も含まれています。 新機能やBUNDLED_WITH問題の改善に関する詳しい情報は以下のブログに書かれています。 Bundler: Version 1.10 released ただし、結構な量があるので英語に詳しい人でないと読み下すのがしんどいかもしれません。 そこでこのブログの内容を日語訳してみることにしました。 翻訳を読んでもらえれば分かると思いますが、 Bundlerの開発チームはみなさんが Bundler 1.10にアップグレードすることを強く推奨しています。 私たちもできるだけ早くBundler 1.10以上(最低でも1.9.10)にアップデートして、Bundler 開発チーム

    Bundler バージョン1.10がリリースされました(翻訳) - Qiita
  • 実用的な新機能が盛りだくさん!RSpec 3.3 完全ガイド - Qiita

    はじめに 2015年6月12日にRSpec 3.3がリリースされました。 APIが大きく変更されたり、派手な新機能が追加されたりはしていませんが、うまく活用するとテストを効率よく書いていけそうな実践的な新機能がたくさん導入されています。 この記事ではそんなRSpec 3.3の新機能を紹介していきます。 新機能一覧 RSpec 3.3で追加された主な新機能は以下の11個です。 これから各新機能の内容を紹介していきます。 特定のエクスペクテーション群をまとめて検証できる(aggregate_failures メソッド) グループやexampleをID指定して実行できる 失敗したテストだけを再実行できる(--only-failures オプション) 失敗したテストを1件ずつ修正できる(--next-failure オプション) テストが増減しても seed を指定したランダム実行が同じ順序で実行

    実用的な新機能が盛りだくさん!RSpec 3.3 完全ガイド - Qiita