- 1. RSpecのControllerテストでNoMethodError: undefined method `get’ for xxxx と表示される
- 2. railsにおける.(ドット)の役割
- 3. 【Rails】「rails g controller コントローラー名」を実行すると…?
- 4. Twitterのシェアボタンを実装
- 5. 【Rails】The asset “application.css” is not present in the asset pipeline. の解消方法
- 6. 【書評】Ruby初学者がプロを目指す人のためのRuby入門改訂第2版を読んで学んだこと
- 7. 【シンボルについて】「:hoge」だったり「 hoge:」だったり【ややこしいから整理した】
- 8. rails g modelを実行するとどうなるか?そしてその後にやるべきこととは?
- 9. Rails7をちょっと試す(Bootstrap編)
- 10. [Rails][devise]追加したカラムにストロングパラメーターを使えるようにしよう
- 11. 【Rails × AWS】本番環境のDB(MySQL)をRDSに移行し、タイムゾーンを日本時間に変更する
- 12. Webの仕組みとHTTP通信について
- 13. CRUD処理(rails6)エラー解決
- 14. rails(Docker)+nginxでPermission denied @ rb_io_reopen – /myapp/log/puma.stdout.log (Errno::EACCES)が発生する
- 15. Rails × Vue で vue Router を使用する
- 16. Rails 7でTailwind CSSを使ってみた
- 17. rails5.2.6で複数モデルのDM機能(ActionCable)を実装
- 18. 【Rails】Rails7.0でyarn build yarn build:cssが起動しない
- 19. Railsコマンド
- 20. Rails ディレクトリ構成・各種ディレクトリとファイルの役割
RSpecのControllerテストでNoMethodError: undefined method `get’ for xxxx と表示される
# はじめに
RailsでRSpecを使用してcontrollerのテスト時のエラー NoMethodError: undefined method `get’ for xxx について
# 目次
1. [Rspecでのバージョンの違い](#Chapter1)
1. [エラーの原因](#Chapter2)
1. [参考文献](#reference)
# Rspecでのバージョンの違い
Rspec3以降ではデフォルトでファイルの場所から自動的に推測する機能がなくなっています。
Rspec3以降ではcontorollerのテストをする時は指定する必要があるようです。
# エラーの原因
**1.typeを指定していない**(今回の私)“`rb
# type: :controller または type: :request とする必要あり
RSpec.describe Api::V1::PostsController
railsにおける.(ドット)の役割
こんにちは!石田佳介です!
僕がインターン生として実務に入っていて、一つ気になったことがあったのです。
rubyのコードでこのようなコードを見たことがありませんか?
“`
<%= @books.each do |book| %><%= book.title %>
<%= book.body %>
<% end %>
“`
この書き方って不自然じゃないですか?
rubyの公式のドキュメントにもこう書いてありました“`
xxx.yyy
オブジェクトのメソッド
“`[ruby公式ドキュメント](https://docs.ruby-lang.org/ja/latest/doc/symref.html#period)
公式ドキュメントのいう通りだとするならば、titleやbookはメソッドになるよなっておもったわけです。titleやbookってカラムじゃね?って思ったので、変だなって思いました。
そこで自分なりに調べてまとめましたので、
【Rails】「rails g controller コントローラー名」を実行すると…?
## 「rails g controller コントローラー名」を実行すると…?
・コントローラー名(複数形)+controllerという名前のcontrollerが生成される。
・viewsフォルダの中にコントローラー名と同名のフォルダが作られる。
Twitterのシェアボタンを実装
# 目的
今回、以下の画像の下の方にあるTwitterシェアボタンの実装をどうやったかご紹介します。
同じように実装したいと思っている人のお役に立てれば嬉しいです。[![Image from Gyazo](https://i.gyazo.com/a98adf439feb3f86c27b89fd23d546a6.jpg)](https://gyazo.com/a98adf439feb3f86c27b89fd23d546a6)
Twitterのボタンをクリックすると別タブでTwitterのページが表示され以下の画像のように
文字やシェアしたいURLが表示されツイートできる状態になります。[![Image from Gyazo](https://i.gyazo.com/7bf50f1b79b39f19044029ba061c257e.png)](https://gyazo.com/7bf50f1b79b39f19044029ba061c257e)
このようにシェアしたいページをボタンを押せばシェアできるようになっています。
# 実装
結論から言うと以下のように実装しています
実
【Rails】The asset “application.css” is not present in the asset pipeline. の解消方法
railsアプリケーションの開発を行っていたら、アクセス時に以下の画面が出てきた。
(関係ないかもですが私はRspecを導入したら発生しました。)![スクリーンショット 2022-01-17 17.03.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1292797/9e6fef68-e9ca-4934-0f61-510214a9b83e.png)
# 環境
ruby 2.7.5
Ruby on Rails 6.1.4.4
Docker 20.10.11 / docker-compose 2.2.1
PostgreSQL 14.1#原因
`log/production.log`を確認したところ、以下のエラーが出ていた。
“`ruby
ActionView::Template::Error (The asset “application.css” is not present in the asset pipeline.):
“`#解決策
`config/environme
【書評】Ruby初学者がプロを目指す人のためのRuby入門改訂第2版を読んで学んだこと
## はじめに
久しぶりの投稿になります。Tassyです。
この度、「プロを目指すための人のRuby入門 改訂第2版」を読ませていただきました。
https://blog.jnito.com/entry/2021/11/11/082704
まさか、当選するとは!!と言う気持ちと感謝の気持ちでいっぱいです。
## プログラミング歴
– 受託開発企業で1年3ヶ月働いている
– 基本的にPHP(Laravel)で実装することが多い
– RubyはProgateで一通り触ったことがあるくらい
– 実際にRuby(Ruby on Rails)を使ってアプリを開発したことはない
Rubyについてはど素人です。## 学べたこと
– Rubyの基本構文(ハッシュ、ブロックetc)
– オブジェクト指向プログラミングとは
– テスト駆動開発の実践
– 正規表現について
– クラスについて
– yeild、Procについて
– パターンマッチについてRubyの基本的な構文を学べるのはもちろんのこと、実際にirbを使って手を動かしながらコードを確認できるので、楽しい。そう、Rubyを書くのは
【シンボルについて】「:hoge」だったり「 hoge:」だったり【ややこしいから整理した】
“`
# 普通のハッシュ (ハッシュの値の呼び方は、 hash[“key1”] )
hash = {“key1” => value1, “key2” => value2}# 前置コロンを使う (ハッシュの値の呼び方は、 hash[:key1] )
hash = {:key1 => value1, :key2 => value2}# 後置コロンを使う (ハッシュの値の呼び方は、 hash[:key1] )
hash = {key1: value1, key2: value2}
“`## 普通のハッシュ
キー名を文字列で指定して、「=>」でつないでキーに対応する値を記載します。
ハッシュの値を呼ぶ時は、キー名の文字列を指定します。## 前置コロン(シンボル)を使う
まず、コロンをキー名の前に書く前置コロンは、シンボルを表します。シンボルとは、Rubyのオブジェクトのひとつの種類です。文字列の代わりに使うこともできますが、必ずしも文字列と同じ挙動をするわけではなく別物です。
ハッシュでは、キー名指定の部分をシンボルで置き換えることができ
rails g modelを実行するとどうなるか?そしてその後にやるべきこととは?
## rails g modelをすると
①db/migrateフォルダに新しくマイグレーションが作成されます。
②新しく作られたマイグレーションファイルの中身をざっと確認する。
③以下のコマンドでデータベースへと反映させる。“`
rails db:migrate#rails g modelでモデルを作成したあとは、このコマンドを実行してデータベースにちゃんと反映させること!
“`マイグレーションファイルとは?
マイグレーションファイルは、データベースを生成する際の設計図になるものです。 また、マイグレーションファイルを実行することで、記述した内容に基づいたデータテーブルが生成されます。>引用元:
「マイグレーションファイルとは?」より一部抜粋
https://qiita.com/jackie0922youhei/items/09a7b081e40506f07358#:~:text=%E3%83%9E%E3%82%A4%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%82%A1%E
Rails7をちょっと試す(Bootstrap編)
## はじめに
Rails 7.0.0 では、[Bootstrap](https://getbootstrap.com/) が簡単に利用できるようになっています。
今回は、Bootstrap を試してみたいと思います。Bootstrap を使うためには、npm と yarn が必要です。
以下のバージョンで確認しました。
– Ruby 3.0.2
– Rails 7.0.0
– npm 8.3.0
– yarn 1.22.17## Rails プロジェクトを作る
新しくRailsプロジェクトを作ります。このとき `–css` を指定します。
(データベースオプションを指定しているのに深い意味はありません。)“`shell
mkdir rails_sandbox
cd rails_sandbox
rails new . –database=postgresql –css=bootstrap
“`## scaffold を実行する
scaffold を使って簡単なCRUDを作ります。 `Bootstrap` の確認をしたいだけなので適当です。
“`s
[Rails][devise]追加したカラムにストロングパラメーターを使えるようにしよう
備忘録として
ユーザー管理機能を実装できる**devise**
デフォルトとして`「Eメールアドレス」「パスワード」`のカラムがすでに存在しており、ストロングパラメーターも使用できるが、自分で追加するカラム(ユーザー名など)にはストロングパラメーターは使えない状態なので、使えるようように記述する必要がある。### 前提
– deviseを導入済み→[deviseの導入手順](https://qiita.com/Shi-raCanth/items/ce98a39800401cc77ee0)
– マイグレーションファイルでカラムを追加している## application_controller.rbファイル
すべてのコントローラーが継承しているファイル。
ここに処理を記述しておくことで、すべてのコントローラーで共通となる処理を作ることができる。
`deviseの処理を行うコントローラーはGem内に記述されているため編集することができない`ので、このapplication_controller.rbを編集していく。## devise_parameter_sanitizerメソッド
【Rails × AWS】本番環境のDB(MySQL)をRDSに移行し、タイムゾーンを日本時間に変更する
EC2環境にデプロイしていたRailsアプリのデータベースを後からRDSに移行したので自分自身の復習も兼ねて手順をまとめました。
#前提
“`
Rails -v 6.0.4
MySQL -v 5.7.36
サーバー: nginx
“`#AWS側の設定
1. AWSのRDSダッシュボードを開く
2. 「データベースの作成」を選択
3. エンジンのタイプを選択
現在使用しているSQLの種類を選択。
今回はMySQLを選択します。
![スクリーンショット 2022-01-16 21.23.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1640672/6e69b3e0-cd4c-abc5-deaa-2fd281dcaf56.png)4.MySQlのバージョンを選択
![スクリーンショット 2022-01-16 21.26.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1640672/e7db83
Webの仕組みとHTTP通信について
##ブラウザとサーバー
ブラウザ:今表示されている画面
サーバー:様々なデータを保存している大きなPCのイメージブラウザではサーバーからファイルをダウンロードしてきて表示している。ファイルの中身にはHTML、CSS、JavaScriptなどの情報が格納されている。
(ブラウザ) ←←←←← (サーバー)
ファイル
(HTML、CSS、JS)##HTTP通信について
HTTPとはブラウザとサーバーのやりとりの方法
基本は、リクエストとレスポンスリクエスト
→→→→→
(ブラウザ) (サーバー)
←←←←←
レスポンスリクエストで欲しい情報をサーバーに投げて、サーバーがその情報を返す。
このリクエストとレスポンスのやりとりのルールを作るのがサーバーサイド言語。##HTTPの基本のメソッド4つ
###①GET データの取得
Webページを表示するときに使うこのページみたい
→→→→→
(ブラウザ) (サーバー)
←←←←←
はい、ペー
CRUD処理(rails6)エラー解決
#CRUD処理を実装中に発生したエラーについてのアウトプット。
##エラー内容
投稿した情報を削除しようとした時に発生したエラー。
削除なのにHTTPメソッドがGET、本来はDELETE.![スクリーンショット 2022-01-09 14.51.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505299/80d052a8-cf80-e74a-212b-ea65fdae8a66.png)
##考えられる原因
1.ルーティングが間違っている。
2.コントローラーアクション間違い
3.ビューファイル記述間違い##エラー解消の流れ
1~3が間違っていないか確認。“`
ルーティング
delete ‘/users/:id’, to: ‘users#destroy’コントローラー
def destroy
user = User.find(params[:id])
user.destroy
end削除ボタン追加
<%= link_to '削
rails(Docker)+nginxでPermission denied @ rb_io_reopen – /myapp/log/puma.stdout.log (Errno::EACCES)が発生する
# はじめに
Rails環境をDockerを利用して環境構築していたのですが、Nginxをつないだところエラーが発生してほかの記事があまり参考にならなかったため自分なりにまとめていきます。
主にWSL2でDockerを使っている方がこのエラーの対象になるかと思います。
# 問題
DockerでRailsとNginxの環境を用意して、Railsコンテナのユーザーを`app`(rootではない)にdocker-compose.ymlで変更した状態でコンテナを起動すると以下のエラーが発生します。
“`
rails | * Listening on http://0.0.0.0:3000
rails | * Listening on unix:///myapp/tmp/sockets/puma.sock
rails | Use Ctrl-C to stop
rails | bundler: failed to load command: puma (/usr/local/bundle/bin/puma)
rails
Rails × Vue で vue Router を使用する
rails アプリの中でVueを使用する場合にVue Routerを使ったページの切り替えができるまでの過程を書いていきます。
## Vue Routerとは
Vue Routerとは、Vue.jsを使ったアプリケーションでルーティング制御をするためのプラグインのことです。これを利用することでリクエストされたURLごとに表示するページを切り替えることができるようになります。
## Vue Routerを使いページの切り替えができるようになるまで
Vue Routerでページの切り替えをするには
– Vue Routerのインストール
– Vue Routerの設定
– application.jsファイルでVue Router の設定をimportする
– 表示したいページ(コンポーネントの用意)
– rails側のルーティングの設定が必要となるので順番に進めていきます。
## Vue routerのインストール
まずは Vue Routerをインストールしていきます。インストールの仕方は様々だと思いますが自分の環境では以下のコマンドでインストールを行いました。
`
Rails 7でTailwind CSSを使ってみた
Rails 7の新機能を触ってみたいと思い、今回はその中でもTailwind CSS for Railsというgemを使ってNode.jsやWebpack無しでモダンなフロントエンド開発環境をお試しで作ってみたいと思います。
# 脱モジュールバンドラー
Rails 7では、[cssbundling-rails](https://github.com/rails/cssbundling-rails)というGemをインストールすることで、 Tailwind CSS、 Bootstrap、 Bulma、PostCSS、 Dart Sassを使用してCSSを結合・最適化し、Railsのアセットパイプラインで配信ができるようになったそうです。Webpackerなどのバンドラーを使わなくとも良くなったということですね。
その中でも今回はTailwind CSSを使ってみました。ちなみにバンドラーを使わないメリット等含め、Rails 7におけるフロントエンド周りの刷新についてDHH氏のブログ記事をまとめた以下記事が参考になりました。
https://www.publickey1.jp/blo
rails5.2.6で複数モデルのDM機能(ActionCable)を実装
#はじめに
DM機能でActionCableを使ってみた。
ActionCableを使えばページをリロードしなくてもメッセージがリアルタイムに表示されるのでかっこいい。###お世話になった記事
ほとんど知識がなかったので下記のサイトを参考にさせていただきながら作成しました。[リアルタイムチャットは誰でもつくれる~Action CableでDM機能を作ろう~](https://qiita.com/OgawaNorihiro/items/6d9f85d8e89d1def4f15)
[[Rails5.2 ActionCable]シンプルなチャットアプリを作ってみた!!](https://qiita.com/kskumgk63/items/660d76488659ee6da350)
[Rails 5 + ActionCableで作る!シンプルなチャットアプリ(DHH氏のデモ動画より)](https://qiita.com/jnchito/items/aec75fab42804287d71b)###開発環境
ruby 2.6.3
Rails 5.2.6#前提条件
DM機能を一
【Rails】Rails7.0でyarn build yarn build:cssが起動しない
#前提
Rails 7.0.1
Ruby 2.7.2
docker 20.10.11###発生したエラー
rails new -j esbuild で作成した後にサーバーを起動させる際にyarn buildとyarn build:cssがエラーが出てバンドルされない状態になってしまう。“`console:console
~/rails(master) $ bin/dev
20:59:27 web.1 | started with pid 94024
20:59:27 js.1 | started with pid 94025
20:59:27 css.1 | started with pid 94026
20:59:27 js.1 | yarn run v1.22.15
20:59:27 css.1 | yarn run v1.22.15
20:59:27 js.1 | error Command “build” not found.
20:59:27 js.1 | info Visit https://yarnpkg.com/en/docs/cli/r
Railsコマンド
#前提
**参考書籍**– 小餅良介著『独習Ruby on Rails』SE出版
**実行環境**
– Ruby on Rails ver5.2.2
#コマンド
**`$ rails new アプリケーション名 [オプション]`**
アプリケーションを作成– `-O` : Active Record の生成をスキップ
– `-d` : 使用するデータベースを指定
– `-T` : 表人で用意されているテスト関連ツールのフレームセットの生成をスキップ
– `-B` : bundle install をスキップ
– `–skip-keeps` : 標準フレームのディレクトリに空のディレクトリ(concernsやimagesなど)の生成をスキップ
– `–api` : ActionController::API を継承したコントローラーを生成—
**`$ rails generator(g) ジェネレータの種類 引数`**
新しいモデルやコントローラのひな型を生成– `$ rails g controller コントローラ名 [アクション名[…]]
Rails ディレクトリ構成・各種ディレクトリとファイルの役割
#前置き
**参考書籍**
– 小餅良介著『独習Ruby on Rails』SE出版
**環境**
– Ruby on Rails ver.5.2.2
#ディレクトリ構成(一階層)
:file_folder:アプリケーションディレクトリ
├ :file_folder:.git
├ :file_folder:app
├ :file_folder:bin
├ :file_folder:config
├ :file_folder:db
├ :file_folder:lib
├ :file_folder:log
├ :file_folder:public
├ :file_folder:storage
├ :file_folder:test
├ :file_folder:tmp
├ :file_folder:vendor
├ :page_facing_up:.gifitignore
├ :page_facing_up:.ruby-version
├ :page_facing_up:config.ru
├ :page_facing_up:Gemfile