fv17の日記 - Coding Every Day

Webエンジニアの備忘用ブログです。主にWeb界隈の技術に関して書いています。

RSpecにおいて、"FactoryBot"と記述しないで済む方法 / create(:user)と書こう

毎回、下記のようにFactoryBotって書いているのが苦痛。everyday Rails にはこの書き方しか無かったから、こういうもんだと諦めていた。

let(:user) { FactoryBot.create(:user) }

こう書きたい。

let(:user) { create(:user) }

解決方法

spec/rails_helper.rb に下記の1行を追加する

RSpec.configure do |config|

  # 省略

  config.include FactoryBot::Syntax::Methods
end

解決策あるじゃない。

未経験からバックエンドエンジニアとして転職するのに時に作成したいポートフォリオについて

KENTAさんの動画から抽出

まとめ

メディア系のWebアプリ開発がオススメ。下記の機能があれば良い。

  • 記事一覧表示
  • 記事詳細表示
  • 記事投稿
  • 管理ユーザー登録(認証系ライブラリの習得)
  • 管理ユーザーログイン
  • 画像ファイルのアップロード
  • DBテーブルのリレーション管理
  • DBトランザクションの制御
  • ページネーション
  • 単体テスト
  • 統合テスト
  • CSSフレームワーク(Bootstrapなど)で見た目を整える

以下、余裕があれば

  • Docker
  • Circle CIで自動テスト
  • CIツールでデプロイ自動化

【Rails】あるモデルがどんなカラムを持っているかを確認する方法

rails c して、そのモデルの column_names メソッドを呼ぶ。

User.column_names
# => ["id", "name", "email"]

【RubyMine】No Rails found in SDK エラーでRailsを実行、およびデバッグ実行できないので解消した

RubyMineでデバッグしてみよう!と意気込んでみたものの、

No Rails found in SDK (直訳:SDKの中にRailsが見つからないぜ?)

で、できない...
というわけで、解消しました。

まず試したこと

下記2つのQiita記事を参考にした。エラーの先輩たちに聞く。

[RubyMine]No Rails found in SDK というエラーが出た
No Rails found in SDK [RubyMine] の解決方法

うーん。まだエラーが出てやがる...どうやら別の方法が必要のようだ。Stack Overflowに近い内容の記事はあるが、明確な解消方法が載ってないので色々試してみる。

これで解決した

RubyMine > Preference > Language & Frameworks > Ruby SDK and Gems において、デフォルトのruby-2.3.7-p456からrbenvでインストール済みのrubyバージョンへ変更。確かに、ruby-2.3.7-p456を選択時に表示されるgemにはactionXxxxx系などRailsに関係するgemが一切含まれていない。*1

f:id:fv17:20181018141227p:plain

その後、再生ボタン、もしくは虫さんのボタンを押すと、「debaseをインストールしても大丈夫かい?」と聞かれるのでYes。インストールが始めるので眺めていると、debase gemやruby-debug-ide gemをインストールしていた。

f:id:fv17:20181018141531p:plain

最後に、虫さんボタンを押したらrailsが起動されて、無事ブレークポイントで止まってくれてデバッグができた。

debaseやruby-debug-ideなどのgemはインストール必須らしい

上記gemはRubyMineでデバッグする時には必須gemっぽいです。まだ詳しく調べてないですが
RubyMine 2018.1 でブレークポイントデバッグがうまく動かない場合

*1:gemって、インストール時のrubyバージョンと紐づく形で保持されるのか?この辺り不勉強で疎い...要キャッチアップ

【2018年度版】フロント、バックエンド、DevOpsエンジニアで一流になるためのロードマップ(記事まとめ)

各分野のエンジニアを目指す場合、何を、どんな順番で学ぶべきかが明確になるため一読するのがオススメ。

フロントエンド

qiita.com

バックエンド

qiita.com

DevOps

qiita.com

機械学習、データサイエンティスト

2018年2月版

tjo.hatenablog.com

2017年夏版 (具体的な学習対象の書籍が掲載されているのはこちら)

tjo.hatenablog.com

Rails - 名前付きルートにおける_pathと _urlの違いと使い分け

_pathは相対パスで、_urlは絶対パスである。

root_path -> '/'
root_url  -> 'http://www.example.com/'

使い分けとしては、

  • _path : 通常はこちらを使う。例えば、Viewにおける利用。
  • _url : redirect_toする場合のみ。主に、controllerにおいて用いられる。

HTTPの標準としては、リダイレクトのときに完全なURLが要求されるため。*1

参照

Stack Overflow

What is the difference between _url and _path while using the routes in rails - Stack Overflow

stackover flowで質問されていて、明確な理由が書かれている。

_path are for views because ahrefs are implicitly linked to the current URL. So it’d be a waste of bytes to repeat it over and over. In the controller, though, *_url is needed for redirect_to because the HTTP specification mandates that the Location: header in 3xx redirects is a complete URL.

Railsチュートリアル

https://railstutorial.jp/chapters/filling_in_the_layout?version=5.1#sec-rails_routes

rails tutorial内でも下記記載がある

一般的な規約に従い、基本的には_path書式を使い、リダイレクトの場合のみ_url書式を使うようにします。これはHTTPの標準としては、リダイレクトのときに完全なURLが要求されるためです。

*1:rails tutorialより。ただし、現在では多くのブラウザが相対パスにも対応しているとのこと。