- 1. タイトル
- 1.0.1. haml ヘッダーロゴの挿入 【備忘録】
- 1.0.2. 【Rails】validationで数値のみ許可する
- 1.0.3. GitHubでアプリケーションを管理する手順
- 1.0.4. GitHubで依存関係のセキュリティの脆弱性を指摘された
- 1.0.5. gem sitemap_generator で priority, lastmod, changefreq を記載しない方法
- 1.0.6. [Ruby] 親モジュールを取得する
- 1.0.7. Railsでランキング機能を実装する方法
- 1.0.8. 本番環境とcredentials.yml.enc
- 1.0.9. Flexboxで子要素の幅を指定する
- 1.0.10. rails routes.rbのmemberとcollectionの違い
- 1.0.11. rails5中級チュートリアル中に発生したSassC::SyntaxError in Pages#index対処法
- 1.0.12. ソースコードを読むとき
- 1.0.13. 既存のRailsアプリの開発環境にDockerを導入する手順【Rails, MySQL, Docker】
- 1.0.14. Railsアプリの開発環境をDockerで構築する手順【Rails, MySQL, Docker】
- 1.0.15. graphql-rubyを使って認可する方法
- 1.0.16. railsでのboorstrapの導入
- 1.0.17. scssの入れ子とパーシャル
- 1.0.18. rails gの際のファイル生成の設定
Rails Tutorial 第9章完了
## 2020/7/19 0.5時間
## 2020/7/20 0.5時間
class methodがよく分からず、ネットで調べました。
https://magazine.rubyist.net/articles/0046/0046-SingletonClassForBeginners.html
## 2020/7/21 0.5時間
class methodの記法がなかなか理解できず時間がかかりました。
## 2020/7/22 0.5時間
「永続化」とは何のことか、ネットで調べました。データをディスクに保存することと理解しました。
## 2020/7/23 3.5時間
うまく動かず、デバッグしました。デバッガーを使いこなせず、PUTSを入れては進め、入れては進めでした。
## 2020/7/24 1.5時間
## 2020/7/25 2.0時間
午前中にやるのですが、途中眠気が襲ってきて寝てしまいました。
## 2020/7/26 1.0時間
上手く動かず、raiseで止められることは分かりました。ひたすらPUTSです。
## 2020/7/27 1.0時間
def で何も返さないと
【Rails】Slimを使ってみた
ProgateのRails講座ではHTMLを使ってViewを作成していたけど
「Slim」なるテンプレートエンジンを使うともっとシンプルに書けるみたいなので
ちょっと導入してみた備忘。##Slim、便利!
例えば↓のようなコード
“`HTML:sample.html
タイトル
Hello World
“`
“`Slim:sample.slim
html
body
h1 タイトル
p Hello World
“`どちらがシンプルかは一目瞭然ですね。
ざっくりしたルールは以下。
・タグなし
・<%= %> → =
・<% %> → –
・コメント → /
・id指定 → #
・class指定 → .##導入方法
以下のGemが必要
・slim-rails
・html2slimGemfileに定義します。
“`Ruby:Gemfile.erb
gem ‘slim-rails’
gem ‘html2slim’
“`
定義したGemをインストー
haml ヘッダーロゴの挿入 【備忘録】
# hamlでのマークアップにおいて、画像の挿入方法について、備忘録として記述する。
### 画像ファイルをimagesファイル下に追加
### halmにimage_タグメソッドを記述
`.heder__left
= linl_to “#”, class: “クラス名” do
= image_tag ‘image以下のパス’, alt: ”, height: , width: , class: `
【Rails】validationで数値のみ許可する
## やりたいこと
カラムを更新する時、数値(整数と少数)のみ許可したい。
たとえば、以下のようなUserモデルを作成したとする。“`
$ rails g model User name:string age:integer height: float
“`| カラム | 型 |
|:—————–:|:——————:|
| id | integer |
| name | string |
| age | integer |
| height | float |この時、浮動小数点型のheightカラムに不正な数値が入らないようにする。
(例)
コンマが不正 >> 160..1
全角数字 >> 160.3
文字列 >> hoge## 実装方法
Userモデルで以下のようにvalidationを記述する。
デフォルトでは、整数と浮動小数点にマッチし、nil値は許容されない。“`ruby:user.rb
class User < ApplicationRecord # デフォルト validates :heig
GitHubでアプリケーションを管理する手順
アプリケーションを開発する上で、GitHubで内容を管理し作業を進めていきます。
自身の備忘を踏まえ、GitHub Desktopを使ったアプリケーション管理の手順を記載していきます。#1.アプリケーションを立ち上げよう
今回は、「myappli」というアプリケーションを題材に進めていきます。“`java:ターミナル
$ cd ~/projects
$ rails new myappli -d mysql
$ cd myappli
$ rails db:create
“`これでアプリケーションのベースは完成です。
#2.ローカルリポジトリを作成してコミットしよう
次に作成した、myappliをGitで管理できるようにして、ローカルリポジトリとします。myappli をローカルリポジトリにしましょう
“`java:手順1
1. GitHub Desktop から myappli のローカルリポジトリを作成。
2. 「Current Repository」→「Add」→「Add ExistingRepository」を選択。
3. Choose…をクリック→
GitHubで依存関係のセキュリティの脆弱性を指摘された
#プログラミングの勉強日記
2020年8月5日 Progate Lv.226
RailsのアプリをGitHubにプッシュしたら「One of your dependencies has a security vulnerability」というメールがたくさんきて、GitHubを見てみたら警告が出ていた。この対処法をまとめる。#セキュリティアラートの確認
「We found potential security vulnerabilities in your dependencies.
Only the owner of this repository can see this message.」という警告が出ている。
(メールにもセキュリティ警告のメールがたくさん届いた。)「Se
gem sitemap_generator で priority, lastmod, changefreq を記載しない方法
# 概要
[sitemap_generator](https://github.com/kjvarga/sitemap_generator) ではデフォルトでは priority, lastmod, changefreq にデフォルト値が記載されます。
これらの項目を出力したくないときもあるのでその方法を共有します。# 方法
priority, lastmod, changefreq に nil を渡すと出力されなくなります。“`ruby
add ‘/home’, priority: nil, lastmod: nil, changefreq: nil
“`
[Ruby] 親モジュールを取得する
# 概要
以下のようなモジュールの階層があるときに、`Child`モジュールから`Parent`モジュールの`VALUE`を参照したかった。
“`ruby
module Parent
VALUE = ‘PARENT’module Child
VALUE = ‘CHILD’def self.parent_value
# ‘PARENT’ がほしい
end
end
end
“`# Rails(activesupport) が使える環境なら簡単
流石に `Module#parent` 的なメソッドがRubyで提供されてるだろうと思い調べて見たが、どうやらRuby(2.7現在)本体にはそのような機能はなく、`Rails` の拡張(`activesupport`)で提供されていることがわかった。
[Module#parent](https://apidock.com/rails/Module/parent)
そのため、Rails環境では以下のように単純に`parent`を参照することで対応可能
“`ruby
modul
Railsでランキング機能を実装する方法
以前、Qiitaのこの記事(Railsでお手軽ランキング機能)を参考にして、ランキング機能を実装したことがありました。
無事、実装できたのですが、以下の問題に直面しました。# kaminariのページネーション機能と組み合わせると上手くいかない!
“`ruby
@posts = Post.find(Like.group(:post_id).order(‘count(post_id) desc’).pluck(:post_id)).page(params[:page])
“`
kaminariのpageメソッドと組み合わせると上記のようになりますが、これだと以下のようなエラーが発生します。
![スクリーンショット 2020-08-04 16.58.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654387/3965da5b-2e9b-5de8-
本番環境とcredentials.yml.enc
#この記事で伝えたいこと
production環境の秘匿情報をcredentialsで扱う前に**しっかり調べましょう**。
ただのコピペダメ絶対。#基礎知識 暗号化と復号について
**〜開発環境〜**
“`$ rails new“`した時config/master.keyと共にcredentials.yml.encは作成されるようです。
そしてこのmaster.keyを使用して暗号化、復号します。
(master.keyは大切に保管しましょう)秘匿情報の編集には以下のコマンドを実行します。
“`
$ rails credentials:edit #master.keyが存在しない時実行すると新たに作成する
“`**〜本番環境〜**
暗号化と復号にはsecret_key_baseも必要になります。
ローカルで“`$ rails secret“`コマンドを実行し作成します。
事前にローカルのmaster.keyをサーバーにも配置しておくこと。#本番環境で気をつけること
credentials.yml.encの暗号化、復号にはmaster.
Flexboxで子要素の幅を指定する
#プログラミングの勉強日記
2020年8月4日 Progate Lv.226
Flexboxで`width`が効かなかったので原因を調べて解決した。(メモ)
`flex-shrink`を0にすることで`width`の指定をすることもできるみたいだが、今回は`width`を使うのをやめて`flex-basic`を使った。#直面した問題
Flexboxで指定すると、画面幅によって子要素が伸びてしまい、綺麗に見れなくなってしまった。
下の画像のように子要素の幅を指定することで、画面幅によって子要素が伸びないようにしたい。
rails routes.rbのmemberとcollectionの違い## routes.rbのmemberとcollectionの違い
railsのroutes.rbでルーティングを設定する時にmemberとcollectionの違いに関して記載します。## menberの場合
“`routes.rb
resources :buy_additional_actions, only: %i[] do
member do
get ‘index’ => ‘buy_additional_actions#index’
“`menberの場合は生成されたurlに:idが自動で追加されます。
“`
buy_additional_action GET /buy_additional_actions/:id/index(.:format) buy_additional_actions#index
“`## collectionの場合
“`routes.rb
resources :buy_additional_actions, only: %i[] do
collection do
get ‘index’ =>
rails5中級チュートリアル中に発生したSassC::SyntaxError in Pages#index対処法
[rails5中級チュートリアル](https://techracho.bpsinc.jp/hachi8833/2018_02_06/51401)中にエラーが発生 以下エラー画像
####仮説と試したこと
エラー文の解説を翻訳してみると>>「エラー:インポートするファイルが見つからないか、読み取れません:bootstrap-sprockets。
app / assets / stylesheets / application.scssの15:1行
@import “bootstrap-sprockets”;」となる。 importの読み込み記述はされているが、sprocketsが存在しないことになっていると仮説。
ソースコードを読むとき
既存プロジェクトに入った際、各Classがどのようなメソッドをもっているかを確認する必要があると思います。
その際、自分がどのように確認を行っているかを以下で述べていこうと思います。
[環境]
Ruby
Rails
Solidus今回は、RailsのSolidusというGemを使って、説明させて頂ければと思います。
$rails c
でコンソールの中に入る。そこで、上記のように、任意の文字にオブジェクトを代入する。
(Spree::Taxonはオブジェクト)$a.methods
を実行。実行することで、そのオブジェクトが持っているmethodが表示される。既存のRailsアプリの開発環境にDockerを導入する手順【Rails, MySQL, Docker】
こんにちは.
今回は, 既存のRailsアプリの開発環境にDockerを導入する手順をまとめてみました.
まだまだ勉強不足ですので, 修正点・改善点等ございましたら, ご指摘いただけますと幸いです.#事前準備
– [Docker-for-macのインストール](https://hub.docker.com/editions/community/docker-ce-desktop-mac)
– 既存のRailsアプリ(今回は以前作成した簡単な家計簿アプリを使用します.)#環境
Ruby:2.5.3
Rails:5.2.4.3
MySQL:5.6
Docker:19.03.8
docker-compose:1.25.4#手順
###1. ルートディレクトリにDockerfile,docker-compose.ymlを追加
![add_file.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630434/b9f3d340-2791-3ed9-4905-cb0b37b0bdc1.png)
Railsアプリの開発環境をDockerで構築する手順【Rails, MySQL, Docker】
こんにちは.
今回は, Railsアプリの開発環境をDockerで構築する手順をまとめてみました.
まだまだ勉強不足ですので, 修正点・改善点等ございましたら, ご指摘いただけますと幸いです.#事前準備
– [Docker-for-macのインストール](https://hub.docker.com/editions/community/docker-ce-desktop-mac)#環境
Ruby: 2.5.8
Rails: 5.2.4.3
MySQL: 5.7.31
Docker: 19.03.8
Docker Compose: 1.25.4#手順
###1. プロジェクトのルートディレクトリを作成
“`:terminal
$ mkdir test-app
“`初めに, プロジェクトのルートディレクトリを作成します.
###2. ルートディレクトリ直下にファイルを追加
“`:terminal
$ cd test-app
$ touch Dockerfile docker-compose.yml Gemfile Gemfile.lock
“`
graphql-rubyを使って認可する方法
GraphQLを使っているときに様々な処理で認可させたい事があると思います。
* このQueryはログインユーザーのみ実行できるようにしたい
* このMutationは管理者のみ実行できるようにしたい
* このQueryは自分の所有しているデータのときだけ返却するようにしたい
* このFieldは自分の所有しているデータのときだけ返却するようにしたい当初はgraphql-rubyの知識が乏しかったので取得や更新処理の中で認可する処理を呼び出していたのですが、graphql-rubyのドキュメントを改めて読み直したところ、認可のためのメソッド(authorized?)がある事がわかったので動作検証を兼ねて記事を書きました。
# graphql-rubyについて
Ruby(Rails)でGraphQLを簡単に使えるようにしてくれるGemです。
https://github.com/rmosolgo/graphql-ruby細かいところは実際に試してみないとわからないことも多いですが、ドキュメントが充実していて素晴らしいです。
https://graphql-ruby.org/
railsでのboorstrapの導入
自分用です!
bootstrapを導入していきます。
“`ruby:Gemfile
gem ‘bootstrap’, ‘~> 4.4.1’
gem ‘font-awesome-sass’, ‘~> 5.12.0’
gem ‘jquery-rails’
“`
Gemfileに記載をし、bundle installを実行。ちなみに、公式のgemを検索するときは、[rubygems](https://rubygems.org/)がおすすめ。
また gem ‘font-awesome-rails’では、font-awesome5系に対応していないので gem ‘font-awesome-sass’を使用する必要があります。
“`ruby:application.scss
@import ‘bootstrap’;
@import ‘font-awesome-sprockets’;
@import ‘font-awesome’;
“`を追加。
“`ruby:application.js
//= require jquery3
//= require popper
//=
scssの入れ子とパーシャル
自分用です!
## sassのimport
railsでは、cssをsassで書いていきます。
・scssにすることで変数や親子関係の定義など、効率化の機能が使用でき、全体のコード量を削減できます。
・sass記法ではインデント制御のためデザイナーに引き渡しづらく、cssの記法から離れてしまうという面からscss記法を採用しています。application.scssとtop.scssがあるとして、top.scssをapplication.scssにインポートします。
“`ruby:application.scss
@import ‘top’;
“`このように、@importを使えば必要なcssファイルだけをインポートできます。
## パーシャル
次に、sassと同じようにviewでも入れ子構造が使えます。
それがパーシャルです。application.html.erbにheaderとfooterのコードがたくさん入っていていると見えずらいですよね。
そこで、shared/_header.html.erbと、shared/_footer.html.erbを
rails gの際のファイル生成の設定
自分用です!
rails g コマンドを使用した際に、assets、helper、testファイル、ルーティングが生成されないように設定して行きます。
“`ruby:config/application.rb
config.generators do |g|g.skip_routes true
g.assets false
g.helper false
g.test_framework false
end
“`これで、無駄なファイルが生成されない。
ちなみに、、、
環境設定をする際は、
config/initializers以下の各ファイル
特定のツールや機能に対する設定ファイルを、ファイル別に記述する。(assets.rb / aws.rbなど)config/environments以下
環境別に行いたい初期化作業を記述する
(production.rb / staging.rb など)config/applicaiton.rb
アプリケーション全体に関する設定を行う順序に寄らないも