- 0.0.1. Railsコマンドが正常に操作しない時疑うべきはspring
- 0.0.2. [Rails]カスタムフォントの設定
- 0.0.3. [初学者向け]削除機能の実装方法
- 0.0.4. 【Ruby】メソッドジャンプをしたい!
- 0.0.5. 【Rails】ビューファイルは使わず、パラメータIDも存在しない中で、アソシエーションのデータを取得する。【APIモードで使う】
- 0.0.6. [rails6.0.0]ウィザード形式でActiveStorageを使用して画像を保存する方法
- 0.0.7. Markdown記法について
- 0.0.8. データベースのカラムなどを修正したい場合
- 0.0.9. form_objectで親子関係のあるフォームを作成する(テストも書いてます)
- 0.0.10. 【Rails】 binding.pryの活用方法
- 0.0.11. 【Rails】検索フォームで、ひらがな・カタカナ・漢字の区別なく検索(精度は100%ではないよ)
- 0.0.12. active recordで特定カラムを空で保存できるように修正
- 0.0.13. 【ActiveAdmin】コピペ新規作成するcloneアクションを追加する
- 0.0.14. クラスやメソッド、変数における名前の単語の区切り方
- 0.0.15. とりあえずのdocker-compose upから入って、Web server(Nginx)の基礎設計を学びながら、Dockerを学ぶ①
- 0.0.16. 最後に任意の文字があるかのメソッドを作る
- 0.0.17. [Rails]データベースに保存された情報をviewに表示する方法
- 0.0.18. Rails: rake taskを良い感じに書く方法
- 0.0.19. Rails6 OmniAuth activestorage ユーザー画像を取得する
- 1. この記事の目的
- 2. この記事の目的
Railsコマンドが正常に操作しない時疑うべきはspring
#動機
Railsを用いてテストコードを作成中に以下のコマンドを打つと正常に動作しなくなったので備忘録としてどのように解決したかを記述“`
$ rails g rspec:request articleRunning via Spring preloader in process 15349
Deprecation warning: Expected boolean default value for ‘–orm’; got :active_record (string).
This will be rejected in the future unless you explicitly pass the options `check_default_type: false` or call `allow_incompatible_default_type!` in your code
You can silence deprecations warning by setting the environment variable THOR_SILENCE_DEPRECA
[Rails]カスタムフォントの設定
# はじめに
アプリ開発でフリーフォントを使用してデザインを変えたのでその使用方法をまとめました。# 目次
1 フリーフォントの準備
2 フォントの読み込み# 1 フリーフォントの準備
まず、フリーフォントサイトから自分が使用したいものをダウンロードします。
その後、ダウンロードしたファイル(拡張子ttfまたはotf)をapp/assets/fonts下に配置します。### 注意事項
フォントはそれぞれ利用条件が異なります。商用可能であっても利用できる範囲に制限があったり、使用時に報告が必要なものもありますので、ご利用の際には必ず配布ページをご確認ください。# 2 フォントの読み込み
CSSファイルに以下を記述します。“`css
@font-face {
font-family: “abcdefg”;
src: url(‘/assets/abcdefg.ttf’) format(“truetype”);
font-weight: normal;
font-style: normal;
}
“`フォントを適用したい箇所にfont-family
[初学者向け]削除機能の実装方法
## 投稿内容
今回は削除機能の実装方法について投稿します。
以下のようなボタンを押した際に`destroyアクション`を発動させます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643372/684d1694-c57e-4f1b-0148-af58d5e04598.png)## コントローラーのアクション
“`items_controller.rb
class ItemsController < ApplicationController #省略 def destroy if @item.destroy redirect_to root_path else render :show end end end ``` 解説) destroyアクションが呼ばれたらインスタンス変数`@item`を削除します。無事削除できた場合は`root_path`へ遷移。削除できなかった場合は`showアクション`へ遷移するようハンド
【Ruby】メソッドジャンプをしたい!
### はじめに
>環境macOS Catalina10.15.5
Rubyで他の人が書いたソースコードを読むときにメソッドの定義場所がすぐわかるようにメソッドジャンプがしたいなと思い、いろいろ試してたどり着いた方法を書き記します
私はテキストエディタはAtomを主に使っていたのですが、RubyのコードをAtomでメソッドジャンプするのは、いろいろ試しましたがうまくいきませんでした、なので
####結論 VSCodeを使うのが簡単
という事になりまりました
###導入手順
####1.こちらでVSCodeをダウンロード
https://azure.microsoft.com/ja-jp/products/visual-studio-code/####2.日本語化
– メニューバーからviewを選択
– command palette を選択
– configure display languageを選択
– install additional languageを選択
– Japanese Language Pack for Visual Studio Code
【Rails】ビューファイルは使わず、パラメータIDも存在しない中で、アソシエーションのデータを取得する。【APIモードで使う】
## はじめに
備忘録です。ここでは、ホーム画面(”/”)で
* `「データ全件」`
* `「1つのデータに関連付けされているデータの総数」`
* `「1つのデータに関連付けされているハッシュのデータ」`を表示させたいとして、indexアクションにて上記のデータを取得する方法について見ていきます。
例えばQiitaのようなアプリケーションを作成するとするならば、* `「記事全件」`
* `「1つの記事に関連付けされているコメントの総数」`
* `「1つの記事に関連付けされているタグのハッシュデータ」`を取得していくようなイメージです。
`全てのデータはハッシュとして取得します。`
## 環境
Ruby: 2.6
Rails: 5.2## モデルの例(作成の過程は省略)
![スクリーンショット 2020-09-28 23.12.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606750/27fc22be-fca1-58f4-adbb-a68dc3aa01da.png)
[rails6.0.0]ウィザード形式でActiveStorageを使用して画像を保存する方法
## 概要
ユーザー登録とプロフィールをさせる時に、ウィザード形式でフォームを作成。
プロフィールに画像を保存したかったが上手くいかなかったため備忘録として記載。
※検索しても同じ状況の方がいなかったので役に立てばと思います。ウィザード形式とは何か?という方は[こちらを参考にしてください](https://qiita.com/ATORA1992/items/40fc543742a6df5a17c1)
## 内容
##### 開発環境
MacOS Catalina 10.15.6
Rails 6.0.0
Ruby 2.6.5#### テーブル構成
deviseを使ってユーザー登録をさせようとしています。
userテーブルはnicknameのみ追加。
profileテーブルにはtwitterのリンクなど記載。
profileテーブルにactive_strageで画像を保存したい。### ウィザード形式を実装
ここらへんの機能の実装に関しては
[こちらの記事](https://qiita.com/Tatsu88/items/7447a669b788b011e96b)がかなり近
Markdown記法について
今回がQiita初投稿になります。よろしくおねがいします。
####「プログラミング知識をMarkdown記法で書いて共有しよう」
と、Qiitaの投稿画面の一番初めにもデフォルトである通りQiitaにしろREADMEにしろGitHubのプルリクエストにしろプログラミング業界ではMarkdown記法というのがちょいちょい出てくるんですね。
自分も初めの頃は参考のサイトを見て少しやろうと思いましたが、~~案外やり方が多くて面倒になり~~別にまだ覚えなくてもいいかと思っていたのですが最近になり少しずつやり方が分かってきたので備忘録的な意味と自分の練習もかねて投稿しようと思いました。まず初めにMarkdownについてですが
##Markdownとは
Markdown(マークダウン)は文章を記述するための記法(マークアップ言語)の1つです。
Markdownとは、メールを記述する時のように書きやすくて読みやすいプレーンテキストをある程度見栄えのするHTML文書へ変換出来るフォーマットとしてジョン・グルーバーによって開発されました。
以下の特徴があります。– 簡単で覚えやすい記述
データベースのカラムなどを修正したい場合
#db:migrateしたデータベースを修正したい場合
プログラミングスクールでのチーム開発学習中にデータベースの修正を行いたかったのですが、
細かい部分の知識が抜け落ちていたので、備忘録用にまとめてます。データベースの操作に慣れていない方や、これからデータベースを学習する方の参考にもなれば幸いです。
###開発環境
DB: MySQL
Rails: 5.2.4.3## まず自分が修正したいデータベース(テーブル)の確認を行いましょう
“`:ターミナル
% rails db:migrate:status
“`
すると、テーブルがこの様に出てくると思います(出てくるテーブルの数や名前はそれぞれ違ってきます)“`:ターミナル
Status Migration ID Migration Name
————————————————–
up 20200823051138 Devise create —-s
up 20200824122031 Create —
form_objectで親子関係のあるフォームを作成する(テストも書いてます)
### 背景
`@shop`に紐づく`@comment`、`@employee`など、様々な子要素があるテーブルがあります。初回情報登録時には、`@shop`、`@comment`、`@employee`など、親要素と一緒に全ての子要素も一緒に保存できるようにしていたのですが、下記の記事のような形で、`accepts_nested_attributes_for`を用いてこれらを実現していたものの、
▼こんなふうに実現していました
[fields_forで子テーブルのデータを一気に作成する(テストも書いてます)[Rails][Rspec]](https://qiita.com/tanutanu/items/c82c1ed2f5fa78a58366)そのうち、`@shop`だけの編集フォームや、`@comment`、`@employee`などの投稿・編集フォームも必要になってきたため、だんだん`model`が様々な記述で肥大化してきました。
### form_objectとは?
↑上記のような状態の時に、特定のフォームに関するバリデーションやデフォルト値の設定などを一箇所に集め
【Rails】 binding.pryの活用方法
この記事では、binding.pryの使い方を解説しています。
binding.pryを活用することで、
・一次ソースに触れる機会が増え、学習効率が上がる
・binding.pryを複数設置して、paramsの流れが理解しやすくなるなど、たくさんメリットがあります。
自分みたいな、初学者方の参考になればと思い、記事にしてみました。
前提
—
チャットアプリを題材にbinding,pryの使い方を学びます。
(注意:この記事ではチャットアプリは完成しません!チャットアプリ作成の記事ではありません)開発環境
・ruby 2.6.5
・Rails 6.0.3.3完成イメージ
—
![chat_demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/516687/b8e22694-826c-f4fc-9788-81f9c30d1180.gif)ER図
—
![名称未設定ファイル (1).png](https://qiita-image-store.s3.ap-north
【Rails】検索フォームで、ひらがな・カタカナ・漢字の区別なく検索(精度は100%ではないよ)
自分がPFとして作っているアプリに検索フォームを実装しました。
ただ、【rails 検索 フォーム】 とかで検索すると、部分一致や完全一致が多く出てきます。
なんとかして漢字の部分をひらがなやカタカナで検索できないかな、と思いやってみました。流れとしては、動画のタイトルを保存する時に、そのタイトルをローマ字に変換して専用のカラムに保存し、検索するときも検索ワードをローマ字に変換して専用のカラムと参照する、という感じです。
最初は検索する時にタイトルを全部変換しようかと思いましたが、動画が増えると時間がかかりそうだな・・・と思ったので上記の方法にしました。如何せん初学者なので、そんな冗長なことしなくてもみたいな部分はあるのと思いますが、忘備録の意味合いも込めて書くので大目に見てやって下さい。
### 参考にしたサイト
– [ひらがな-カタカナ-漢字-ローマ字を変換するgemつくったよ](https://qiita.com/isy/items/b850d67a499e38179d3e)
– [Web上のコンテンツや入力情報などが、英語か日本語か判別したいときのメモ](http
active recordで特定カラムを空で保存できるように修正
### 解決策
下記のようにallow_blankを追加したら解決できました
“`
validates :something, allow_blank: true
“`### 参考記事
[Validate attribute only if it present (only if user fill in it)](https://stackoverflow.com/questions/7868067/validate-attribute-only-if-it-present-only-if-user-fill-in-it)
【ActiveAdmin】コピペ新規作成するcloneアクションを追加する
#はじめに
rails_adminの方ではclone機能をgemで追加して実装出来たのですが……
→ https://qiita.com/MATO/items/116bda1f3629ece0812cactive_adminの方ではgemではなく設定ファイルをいじって実装出来たのでメモです。
かなり汎用性あるコード書けたと思います。#ソースコード
関係ない所もありますが、見返す用に全部載せておきます。“`app/admin/items.rb
ActiveAdmin.register Item dopermit_params :kind_id, :name, :memo
# 一覧ページで検索フィルター要らないので消しておく
config.filters = false# 一覧ページでのデフォルトソート
config.sort_order = ‘updated_at_desc’# 間違って削除しないように処理自体を消しておく
actions :all, :except => [:destroy]# カスタムアクション、clo
クラスやメソッド、変数における名前の単語の区切り方
疑問
クラスやメソッド、変数の名前をつける時に、単語の区切り方の違いが分からない結論
クラスにはアッパーキャメルケースを使い、メソッドや変数にはスネークケースを用いる。説明
(ex)
「 user tweet creator」という名前を付けたい時を例にする・クラスに命名する時
UserTweetCreator
というように命名する・メソッドや変数に命名する時
user_tweet_creator
というように命名するつまり、
アッパーキャメルケース
初めの文字を大文字にし、単語の区切りを大文字で表すスネークケース
単語の区切りを_で表すとなります。メソッドや変数はスネークケースを使用かつ、全て小文字となります。
まとめ
命名規則を守ることで、チームの方達との、コードの意味の伝達が円滑になると思いますので、
参考にして、いただけると幸いです。*ちなみにカラム名もスネークケースを用います。
とりあえずのdocker-compose upから入って、Web server(Nginx)の基礎設計を学びながら、Dockerを学ぶ①
①環境構築〜最もシンプルなWeb server構築編です
分かりづらい点、不正確な点はコメントいただけましたらモチベーションに繋がります
今回こちらに先立ってZennというサービスで記事を書いて見ました
元記事
[とりあえずのdocker-compose upから入って、Web serverの基礎設計を学びながらDockerを学ぶ① | Zenn](https://zenn.dev/naokit_dev/articles/1f358cf75fab30c55009)## はじめに
以下のような方とって有益な内容になればと思っています
1. これから初めてのwebアプリを作成する
2. webアプリを作成し、これからデプロイする
3. 初めてデプロイまで到達したが、Nginxが何をしているかとか、設定内容はコピペでよくわかっていない私は独学プログラミング5ヶ月目で3の状態に近いかと思います
個人的なメッセージとしては是非1.の状態の方により多く、この記事の内容が届くといいなと思っています
**Dockerがなんとなくわかる、便利な気がする!**、**webアプリが動く仕組み
最後に任意の文字があるかのメソッドを作る
【概要】
—————————————-
1.結論2.どのようにコーディングするか
3.開発環境
1.結論
—————————————-
downcaseメソッド、lengthメソッドと、sliceメソッドの3種類を使う!
2.どのようにコーディングするか
—————————————-“`ruby
def str_discrimination(str_a, str_b)
a_down_str = str_a.downcase #—❶
b_down_str = str_b.downcase
a_len_str = a_down_str.length #—❷
b_len_str = b_down_str.length
if b_down_str.slice(-(a_len_str)..- 1) == a_dow
[Rails]データベースに保存された情報をviewに表示する方法
## 投稿の内容
今回はデータベースに保存された情報をviewに表示する方法について投稿します。
なお、既にデータベースに情報は保存されている、として投稿します。実装の流れは以下の通り。
① コントローラーアクションの記述(showアクション)
② 表示したい情報が文字列の場合
③ 表示したい情報が複数枚画像の場合## 環境
Rails 5.2.4.3
ruby 2.5.1
mysql 14.14
viewはhamlで実装## ① コントローラーアクションの記述(showアクション)
今回は`商品(item)詳細ページ`に情報を表示したいので、`itemsコントローラーのshowアクション`を使います。“`items.controller.rb
class ItemsController < ApplicationController #省略 def show @item = Item.find(params[:id]) end #省略 ``` 解説) まず`Itemモデルのpathのidをfindメソッドで検索し、該当するidに属した商品(
Rails: rake taskを良い感じに書く方法
# 良い感じ = 以下の二点
1. テストしやすいこと
* 工数削減のため
1. (ある程度は)エンジニア間での書き方が統一できること
* 例えば`dryrun`の指定方法が書き手によってまちまちだと、商用でのtask実行時に事故が起きる可能性もあるので統一可能であればした方が良い
* ログのフォーマットが統一されていないと作業効率が悪いなどなど
# コード
“`ruby:lib/tasks/issue_6885.rake
require_relative ‘helpers/all_user_name_update_helper.rb’namespace :issue_6885 do
desc ‘これはサンプルです’
task all_user_name_update: :environment do
helper = AllUserNameUpdateHelper.newhelper.main
end
end
“`“`ruby:lib/tasks/helpers/all_user_name_u
Rails6 OmniAuth activestorage ユーザー画像を取得する
永遠の初心者による自分のためのメモ。
Rails学習開始3ヶ月。
とりあえずこれで動きました程度に考えていただければ幸いです。
こうした方がええやんと言うご意見がある方は優しいコメント頂けると嬉しいです。この記事の目的
active storageにユーザーのプロフィール画像を保存する。
ググってみてもcarrierwaveばかりでactive storageの記事をあまり見かけなかったので、同じ境遇の人がいればと思い投稿ました。環境
Ruby 2.7.1p83
Rails 6.0.3.3前提条件
deviseによるログイン機能実装済み。
OmniAuthによるTwitter、google、facebookなどのログイン認証機能実装済み。
私は、以下の記事を参考にさせて頂きました
・手続き関連
https://qiita.com/kazuooooo/items/47e7d426cbb33355590e
・OmniAuth導入
https://qiita.com/LuckHack
Rails6 OmniAuth twitter認証 emailの条件分岐
永遠の初心者による自分のためのメモ。
Rails学習開始3ヶ月。
とりあえずこれで動きました程度に考えていただければ幸いです。
こうした方がええやんと言うご意見がある方は優しいコメント頂けると嬉しいです。この記事の目的
twitter認証はメールアドレスを取得しないので、ランダムメールアドレスを生成する。
google、facebook認証は、正規のメールアドレスを取得する。
twitterはランダムアドレス。他は、正規のアドレスで条件分岐させる。環境
Ruby 2.7.1p83
Rails 6.0.3.3前提条件
deviseによるログイン機能実装済み。
OmniAuthによるTwitter、google、facebookなどのログイン認証機能実装済み。
私は、以下の記事を参考にさせて頂きました
・手続き関連
https://qiita.com/kazuooooo/items/47e7d426cbb33355590e
・OmniAuth導入
https://qiita.com