- 1. 【vue.js】チェックボックスでチェックされているときとチェックされていないときでそれぞれ値を送る方法
- 2. 不鮮明な部分
- 3. 基本的な部分
- 4. Ruby 条件分岐 繰り返し処理 総集編
- 5. devise+omniauth-rails_csrf_protection+[facebook/google]を使ったユーザ登録とログイン
- 6. Template repositoryを使って、Rails on Dockerの初期設定を共通化させてみた
- 7. ActiveAdmin の定義済みコールバック
- 8. #Rails + FactoryBot でデータ作成 create での validation を無効化する例 : trait を利用
- 9. 【GitHub Actions】 RailsアプリをRuboCop/ESLintチェック+Slack通知+キャッシュする
- 10. Ruby 変数 ハッシュ 総集編
- 11. Rails Devise+carrierwaveでのストロングパラメーター メモ
- 12. Railsのテスト環境にデバッグ用の情報を表示する
- 13. RailsアプリをHerokuにデプロイする手順
- 14. uninitialized constant Tweet::ImageUploader carrierwave mini_magick 導入
- 15. Elastic Beanstalk + Railsで、can’t find gem bundlerが発生する問題
- 16. rails アプリをherokuに上げるまでの道のり プログラミング学習42日目
- 17. railsでsubmitをキャンセルする
- 18. git checkoutによって エラーが何か追求する プログラミング学習42日目
- 19. #Rails の validation で model のレコード・キーに関連しないエラーメッセージを自由に設定する
- 20. バリデーションのエラー表示をなるべく出さない
【vue.js】チェックボックスでチェックされているときとチェックされていないときでそれぞれ値を送る方法
#はじめに
最近、rails+Vue.jsの組み合わせで使う必要があり、備忘録的につまったところを残していこうと思います。
今回はタイトルにもある通り、チェックされているときとチェックされていないときにそれぞれ値を送る方法についてまとめました。
もっと良い感じに書けるなどありましたら、コメントいただけると嬉しいです。。#実装してみる
##erbの場合
`erb`の場合、下記で実現できます。“`erb
<%= f.check_box :is_mon_monthly_contract, {checked: child_fee.plan.is_mon_monthly_contract_target?}, :target, :non_target %>
“`これでチェックされている場合は`target`、チェックされていない場合は`non_target`が送られます。
ちなみにinput要素のチェックボックス自体にチェックされていない場合の値を指定する方法はないようです。
でも、erbでは実現できているじゃないか。。と思い調べてみたところhiddenを使用することで実現している
不鮮明な部分
後で穴埋めする
名前付き
9以降
基本的な部分
抜けて検索しがちな知識や単語を書く
Ruby 条件分岐 繰り返し処理 総集編
ruby 総集編 part2
ここでは処理の仕組みや流れを解説します
※ググればすぐ出る、メソッドの意味などは割愛します。お題
・条件分岐 if~end
・繰り返し処理 while true do~end本題
●条件分岐 if~end
注意点
コードを読む順番
def~endは、無視されます
if内のpost_reviewがpost_reviewをメソッド呼び出します。
※defとはメソッドを定義するコードです
devise+omniauth-rails_csrf_protection+[facebook/google]を使ったユーザ登録とログイン##この記事で解決できること
deviseを使ったSNS認証ログイン
snsのユーザ情報を利用して登録フォームに入力する**メールアドレスで登録するとき**
**snsを使って登録するとき**
##開発環境
MacOS Mojave 10.14.6
ruby 2.5.1
Rails 5.2.3
mysql
Template repositoryを使って、Rails on Dockerの初期設定を共通化させてみた
## Railsプロダクトを作るたびに、毎回Rails環境作るの面倒…
と思うことありませんか?
私の場合は
Dockerの設定して…
いつも使うGemの設定して…
CircleCI設定して…
細かい調整してと…DockerでRails環境を作成するために、やるようなことって
ちょっと面倒な割りに、共通化出来ることありますよね。そういう時は、GitHubの新機能である `Template repository` を使ってみるといいです!
参考
## Template repositoryの説明
手短に説明するとこんな感じです。
– Template repositoryとしてセッティングしたリポジトリのファイルをコピーした状態で新しいリポジトリを作成出来る
– しかし、commit履歴は引き継がないので、ファイルだけコピーしたい場合に重宝する### 何が便利か?
毎回行うよう
ActiveAdmin の定義済みコールバック
[ドキュメント](https://activeadmin.info/)に見つからず、[ソース](https://github.com/activeadmin/activeadmin/)を読んでいたら見つけたのでまとめ。
# 定義済みコールバック
https://github.com/activeadmin/activeadmin/blob/master/lib/active_admin/resource_dsl.rb#L162
| before/after_XXX | コールバックが呼ばれるアクション |
|—|—|
| `build` | new and create actions |
| `create` | create action |
| `update` | update action |
| `save` | create and update actions |
| `destroy` | destroy |## 使い方
controllerブロックを使わずに、すっきり書けます。
“`rb
ActiveAdmin.register Post d
#Rails + FactoryBot でデータ作成 create での validation を無効化する例 : trait を利用
# trait 指定なし
“`rb
FactoryGirl.define do
factory :person do
name { nil }
sex { nil }to_create { |instance| instance.save(validate: false) }
end
end
“`# trait 指定あり
こいつで範囲を限定的にできる
“`rb
FactoryGirl.define do
factory :person do
name { nil }
sex { nil }trait :no_validation do
to_create { |instance| instance.save(validate: false) }
end
end
end
“`# Original by Github issue
https://github.com/YumaInaura/YumaInaura/issues/2745
【GitHub Actions】 RailsアプリをRuboCop/ESLintチェック+Slack通知+キャッシュする
本記事は、先日投稿した[NuxtアプリをGitHub ActionsでGAE環境にデプロイする](https://qiita.com/curosuke/items/a8d4a6cf456160d8a3ed)の**Railsアプリ版**です
## やりたいこと
– GitHub Actions上で「RuboCop/ESLint」のチェックを実行する
– 上記の実行結果をSlackに通知する
– ワークフローの高速化のために`bundle install`と`yarn install`の結果をキャッシュする## 対応内容
以下の設定で実現できました“`yml:.github/workflows/feature.yml
name: Rubocop & ESLint checkson:
push:
branches:
– feature/*
– hotfix/*jobs:
build:
runs-on: ubuntu-lateststrategy:
matrix:
ruby: [ ‘2.
Ruby 変数 ハッシュ 総集編
総集編になります。
ここでは処理の仕組みや流れを解説します
※ググればすぐ出る、メソッドの意味などは割愛します。お題
●変数、代入、再代入
●ハッシュ、キー、バリュー本題
●変数、代入、再代入
上記をご覧になりながら説明しますまず代入です。Hello Worldをvalueに代入します。
左辺 = 右辺 の式は、
右辺を左辺に代入という意味です。
ここでいう、左辺を変数、右辺を変数に定義する内容です。では、進めていきます
puts valueとは、変数を表示という意味ですvalue = See Youは、最初に代入した内容を再代入してます。numberの中身を変更します。とう宣言です。
最後は、再代入したものをputsしている。
Rails Devise+carrierwaveでのストロングパラメーター メモ
自分用メモ
ストロングパラメーターのkeysが間違っていて画像が保存されず書き方を調べてうまくいったのでメモ。###Deviseを使っている場合の画像用のストロングパラメーター。
モデル作成+アップローダー作成後にストロングパラメーターを追加
↓
keysはregistration.htmlなどのフォームを見ればわかるのでそれを全部追加
↓
アップローダーの紐付け“`app/models/user.rb
mount_uploader :avatar, AvatarUploader
“`今回の場合↓
“`registration_controller.rb
protecteddef configure_account_signup_params
devise_parameter_sanitizer.permit(:sign_up, keys: [:username, :image, :email, :password, :password_confirmation])
end
Railsのテスト環境にデバッグ用の情報を表示する
Viewファイル内に
`<%= debug {変数} if Rails.env.development? %>`
を追加すると、テスト環境で任意の変数の中身を出力することができます。####`@user`の中身を確認したい時
“`
<%= debug @user if Rails.env.development? %>
“`####`params`を確認したい時####
“`
<%= debug params if Rails.env.development? %>
“``/app/views/application.html.erb`に記述することで、全てのページでの出力が可能です。
/app/views/application.html.erbの最下部に`<%= debug params if Rails.env.development? %>`と記述した場合の表示。
RailsアプリをHerokuにデプロイする手順本記事は、以下の記事を自分用にまとめ直したものです。
[【初心者向け】railsアプリをherokuを使って確実にデプロイする方法【決定版】](https://qiita.com/kazukimatsumoto/items/a0daa7281a3948701c39)・Gitのインストール、Commit
・Heroku CLIのインストール
はできている前提で話を進めます。詳しい内容が知りたい方は、上記の記事をご参照ください。
##1.Railsでアプリを作成
各自アプリを作成します。rootにアクセスされた時にルーティングを忘れずに設定してください。##2.Gemfileの設定
開発環境(ローカル)、本番環境(Heroku)のそれぞれで利用するデータベースの情報をGemfileに記述します。
まず12行目付近の`gem ‘sqlite3’`をコメントアウトします。“` Gemfile
# gem ‘sqlite3’
“`
次に40行目付近`group :development, :test do ~~ end`内に、開発環境、テスト環境用のデータベースに関するGemを追
uninitialized constant Tweet::ImageUploader carrierwave mini_magick 導入
写真アップ機能追加のために
$ brew install imagemagick
ターミナルで実行gem ‘carrierwave’
gem ‘mini_magick’
Gemfileに記載
$ bundle install
$ rails g uploader imageapp/models/tweet.rb に下記記載
mount_uploader :image, ImageUploaderapp/uploaders/image_uploader.rbに下記記載
include CarrierWave::MiniMagick
process resize_to_fit: [800, 800]![スクリーンショット 2019-11-20 19.20.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536447/bf77b403-9d3a-8811-67cb-ab05cf37249c.png)このようなエラーが出ます原因は何でしょう?
$ brew install image
Elastic Beanstalk + Railsで、can’t find gem bundlerが発生する問題
## EC2インスタンスが初期化or再構築された際に、発生する
Railsアプリをデプロイする際、EBは`/opt/elasticbeanstalk/hooks/appdeploy/pre/10_bundle_install.sh`を呼び出し`bundle install`を実行する。
この際、Bundlerのバージョンがデフォルトは1.16.0という古いものになっており(何で?)、最近のバージョンのRailsでは互換性がなくエラーが発生する。“`
ERROR: [Instance: i-###############] Command failed on instance. Return code: 1 Output: (TRUNCATED)…:infind_spec_for_exe’: can’t find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException) from /opt/rubies/ruby-2.5.5/lib/ruby/site_ruby/2.5.0/rubygem
rails アプリをherokuに上げるまでの道のり プログラミング学習42日目
##DBはpgがやりやすい
自身の開発環境のdbはmysql2でherokuつまり本番環境のデフォルトのDBはpgらしい。herokuのDBをmysql2に変更することもできるっぽいが、今回は自身の本番環境をpgにします!##エラーの嵐
“`
$git add .
$ git commit -m “change DB adapter to PG”
$ git push heroku
“`
とherokuのプッシュしようとするととてつもない長さのエラーが出てしまいました。エラーの原因はいくつかありました。
1.database.ymlの中身がmysql2を示していた
訂正後herokuのsettingのものと合わせます(以下画像)
railsでsubmitをキャンセルする
参考:https://www.sejuku.net/blog/28720#submit
「false」を渡してあげるだけです。
“`javascript
<%= form_for @wifi_agency, html: {class: 'form'} do |f| %>
<%= f.text_field :name, :class=>“form-control”%>
<%= f.submit "保存", class: "btn btn-success", :onclick => “return check_name()”%>
<% end %>
“`
git checkoutによって エラーが何か追求する プログラミング学習42日目
###そもそもなんでgithubを使うの?###
githubは簡単に言うと変更を記録したりするものです。
チーム開発などでは必須です。ただ僕は初心者なのであくまでも1人で使っています。##githubは初心者1人でも使うべき##
例えば何か変更を加えたことでエラーが出てしまった時。エラーの原因が分からないから元に戻したい、そんな時にgithubは役に立ちます。![IMG_6445.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513269/0e556c64-5d46-056d-8a3f-7ff440e82403.jpeg)
こちらはインターン先のエンジニアの方に書いていただいたgithubの簡単な説明になります。masterがデプロイするもの(実際にサービスとしてリリースするもの?)で、そのよこのthongとsekiはエンジニアの名前です。
例えばmasterでA,B,Cまで作ってあり、それ以降を変更する場合各エンジニアはそれぞれのブランチでその変更作業を行います。理由→変更したものがそのま
#Rails の validation で model のレコード・キーに関連しないエラーメッセージを自由に設定する
`:base` にエラーを追加すれば良さげ。
“`rb
class User < ApplicationRecord validate :heart def heart if heart.evil? errors.add :base, 'Be gentle' end end end ``` # Original by Github issue https://github.com/YumaInaura/YumaInaura/issues/2743
バリデーションのエラー表示をなるべく出さない
Railsでバリデーションエラーのメッセージ表示を作り込むには、コストがかかります。なるべくHTMLとJavaScriptでバリデーションをやってしまい、Railsのバリデーションエラーはめったに出さない、というスタイルを目指したい。
## バリデーションの種類とHTML
確認したブラウザーは、Chrome、Firefox、iPhoneのSafari (2019年11月時点のバージョン)、およびIE11です。
### presence
input, textarea, selectなどたいていの入力欄ではrequired属性を使って、空かどうかをチェックできます。
#### input type=”text”
required属性で空文字列をチェックできますが、スペースだけの文字列はチェックされません。pattern属性に正規表現を追加して空白文字以外の文字が含まれるようにします。
“`HTML
“`pattern属性の正規表現は、文字列全