- 1. TodoじゃなくてNoTodoアプリ作ってみた。(とridgepoleの注意点)
- 2. Googleアナリティクスを活用し、サイト分析を行う-1章
- 3. Rails Webpacker configuration file not found
- 4. 【勉強用】Apacheとかnginxとかunicornとかpassengerとか(おまけにリバプロ)
- 5. Rails6でPG::ConnectionBadというエラーが出た原因と対応
- 6. バリデーションのエラーメッセージの個別表示
- 7. 2人でRailsアプリケーション開発をしてみて
- 8. DockerでRailsチュートリアルのローカル開発環境構築(Rails 6 + PostgreSQL + Webpack)
- 9. Puma – Nignx って環境で rails s -e production -d でうまくいかない時の逃げ道
- 10. 【orderメソッド】Railsで、データの並び順を設定する
- 11. 【超初心者的Railsアプリ作成】土台作り Part.2
- 12. 【超初心者的Railsアプリ作成】土台作り Part.1
- 13. 【超初心者的Railsアプリ作成】はじめにやること
- 14. 掲示板投稿機能の作成の確認ポイント
- 15. defaults.message
- 16. refileのattachment_image_tagで画像がうまく表示されない場合に
- 17. Railsのルーティングついて
- 18. Railsでの複数カラムの追加・削除とまとめて行う方法
- 19. EC2にデプロイしたアプリケーションからシークレットキーを生成できない
- 20. sorceryを使用して、ユーザー機能を作成する
TodoじゃなくてNoTodoアプリ作ってみた。(とridgepoleの注意点)
## 前書き
今回、NoTodoというwebアプリを作りました。Todoリストを作って「やることが多すぎる!」と感じたことはありませんか?
しかし逆にやらなくてもいいことも多くないですか
無駄なことを減らせば本当にやらなければいけないことに時間をさくことができます。
このwebアプリはそんな「しないことリスト」(NoTodo)をつくるためのものです。ツイッターでリストを公開することも出来ます。[NoTodo>](https://notodoo.herokuapp.com/)
##使った技術
rails6
heroku hobbyプラン(freeだとスリープするのがつらい)
ドメインは取得してません。使ったgem(一部省略してあります)
“`
gem ‘rspec-rails’
gem ‘factory_bot_rails’
gem ‘ridgepole’
gem ‘devise’
gem ‘omniauth-facebook’
gem ‘omniauth-google-oauth2’
gem ‘dotenv-rails’
gem ‘devise-i18n’
gem
Googleアナリティクスを活用し、サイト分析を行う-1章
### 背景
現在デプロイしているサイトが自分以外のユーザに見ていただいているのか、経緯やアクセス数を調査したく、グーグルアナリティクスを導入することにしました(ちょっと噛みそうになります…笑)
今まで、gitのトラフィックなどから、自分のポートフォリオサイトのアクセスを確認していたのですが、アナリティクスを使用していろいろと傾向を調査していきたいと考えています。※この記事は、アナリティクスを設定してから、約1時間ほど経過しました。まだ分析結果が表示されないのですが、もう少し、待ってから状況を報告したいと思います(長ければ24時間かかるとのことです。)
表示結果や、手順の修正情報等々はおって掲載します。### 環境
| 項目 | 内容 |
|:—————–|:——————:|
| OS.Amazon Linux AMI |
Rails Webpacker configuration file not found
###発生条件
rails6で新規アプリを作るとそうなるrails webpacker:install
↪︎yarn not installed.brew install yarn
↪︎brew command not found.Homebrewをインストール
###用語解説
webpacker -> railsでwebpackを使えるようにするためのgem。node.jsのモジュールの1つ。rails6からwebpackerが初期設定で搭載されるようになった。webpackはjs,css,画像といったモジュールをまとめてくれるツール。これにより管理しやすくなるだけでなく、webの読み込み速度が上がる。yarn -> node.jsのパッケージマネージャ。webpackerを使うために必要。パッケージマネージャとは、多くのプログラムをまとめるパッケージを管理するツール。フレームワークやwebpackのようなモジュールバンドラーなどの多くのプログラムで構成されているモノを速くインストールすることができる。パッケージマネージャがない場合手動でパッケージを管理しなければい
【勉強用】Apacheとかnginxとかunicornとかpassengerとか(おまけにリバプロ)
#勉強用
自己学習の為にQiitaに残していきたい##Webアプリケーションの流れ
###静的なサービス
– Webブラウザのリクエストに対して、Webサーバが結果を返す
– webブラウザ ⇄ Webサーバ###動的なサービス
– Webブラウザのリクエストに対して、Webサーバがアプリケーションサーバにリクエストを送り、返ってきた結果をwebブラウザに返す
– Webブラウザ ⇄ webサーバ ⇄ アプリケーションサーバ ⇄ アプリケーション
– Webブラウザのリクエストに対して、webサーバがモジュールを通してプログラムを実行し、返ってきた結果をWebサーバに返す
– Webブラウザ ⇄ Webサーバ(モジュール) ⇄ アプリケーション##Webサーバ
例)Apache、nginx##アプリケーションサーバ
Webサーバから受け取ったリクエストを元に、Rubyなどを実行し、Webサーバに結果を返す
例)unicorn、Puma※passengerは?
Apacheやnginxのようなwebサーバに組み込んで使えるモジュール。
R
Rails6でPG::ConnectionBadというエラーが出た原因と対応
## エラーが出た手順
`rails s`でWebサーバー起動
↓
`http://localhost:3000/` にアクセスすると
PG::ConnectionBadというエラーが出た
↓|![3C20CC71-D23D-4497-A685-5704DA0F704A.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538652/41f55d93-6a23-5303-83fd-89a5758af273.png)|
|:—|## 原因
db(PostgreSQL)のほうはdockerで立ち上げる構成だったのだけど
立ち上げ忘れていたので、dbに接続できない状態だった。## 対応
`docker-compose up -d`でDBを起動する## 確認
webページの再読み込み
↓
正常に表示された OK!
バリデーションのエラーメッセージの個別表示
自分用です!!
バリデーションでのエラーメッセージをviewで表示していきます。
例えば、userを登録するときに、passwordとnameにpresence: trueのバリデーションをかけた、状態でパスワードとnameを空欄で登録すると、バリデーションに引っかかります。
railsのオブジェクトは、デフォルトでエラーオブジェクトを保持しているので、画像のようにエラーメッセージを取得できます。
ここでエラーメッセージが日本語化されているのは、i18nの働きによるものです。
さらに、full_messagesというメソッドを使用することで、エラーメッセージだけを取り出すことができます。
![スクリーンショット 2020-08-06 3.06.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675654/bde05ac4-a73b-c1d9-a229-fdab7a5d6aa7.png)
エラーメッセージは、色々な入力フォームで使いたいので、パーシャルを使います。
“`ruby:_
2人でRailsアプリケーション開発をしてみて
#プログラミングの勉強日記
2020年8月6日 Progate Lv.226
フロントエンドエンジニアを目指して独学で勉強を始め、アウトプットのためにポートフォリオなど個人開発をしていた。
チーム開発の経験を積むべきというアドバイスを聞き、2人でRailsでアプリケーションを作成した。アプリケーションを完成することができたので、簡単にまとめてみる。#開発環境
Rails 5.1.7
VScode
バージョン: 1.46.1 (system setup)
コミット: cd9ea6488829f560dc949a8b2fb789f3cdc05f5d
日付: 2020-06-17T21:13:20.174Z
Electron: 7.3.1
Chrome: 78.0.3904.130
Node.js: 12.8.1
V8: 7.8.279.23-electron.0
OS: Windows_NT x64 10.0.18362#開発の進め方
VscodeのRemote Development 拡張機能を使って、VSCode からインターネット経由で同じサーバーを使ってログインする
DockerでRailsチュートリアルのローカル開発環境構築(Rails 6 + PostgreSQL + Webpack)
# はじめに
最新(2020.8.5現在)のRailsチュートリアルではRails 6が使用されており、
これに対応した開発環境構築をDockerでやってみたいと思います。個人開発アプリの開発環境構築の際に、
私は新しいものが好きだから…とRails 6を導入しました。ところが…このRails 6からJavaScriptのモジュールバンドラーにWebpackが導入されたことにより、
BootstrapやFontawesomeといったツールの導入、管理方法が変わるだけでなく、
そもそも環境構築の際もRails 5では必要ない手順が必要だったりと、
Rails 6とWebpackの壁に盛大にぶつかることとなりました…せっかくなので、今回の試みを経て、知識、経験の整理定着を図りたいと思います。
また、実際にRailsチュートリアルを脱線しながら再走し、学びを深められたらと思っています。
個人開発アプリ
[mdClip <オンラインmarkdownエディタ>](https://mdclip.xyz/)以前Rails 5の環境構築をDockerでやってみた記
Puma – Nignx って環境で rails s -e production -d でうまくいかない時の逃げ道
# 前提
EC2 に Rails6 + Puma + Nginxでデプロイしてて
かつ EC2にSSH接続したターミナルで“`
rails s -e production
“`
では問題なくサービスが表示されているのに“`
rails s -e production -d
“`
ではエラー画面が表示されるだと?#### ええ〜これじゃサービス起動させ続けるのにSSH接続しっぱなしじゃーん
という悩みを抱えたキミ向けだよ!# 解決
Railsのルートフォルダにあるconfig/puma.rbに“` config/puma.rb
daemonize
“`
って追記するんだ!
これで“`
rails s -e production -d
“`
では起動できないままだけど“`
rails s -e production
“`
これでデーモン化されるので解決だよ!これじゃローカルでもデーモン化されて不便だろって人は
“` config/puma.rb
if Rails.env == ‘production’
daemonize
en
【orderメソッド】Railsで、データの並び順を設定する
#参考対象者
– Railsで、アプリ作ってるけど、あるデータの並び替えをしたいなと思っている方#特定の状況下で、データを並び替えたいとき
###基本形
“`
Model.order(Column: :DESC)
Model.order(“Column DESC”)
“`デフォルトでは、ASC(昇順)になっているので、DESC(降順)にすることができる
###実際に、並び替えしたデータ群を取得してみる
“`feed_controller.rb
#データベース上の全てのデータを取得
feeds = Feed.order(id: :DESC)#現在ログイン中ユーザーの全てのデータを取得
feeds = current_user.feeds.order(id: :DESC)
“`今回は、Feedモデルというデータを取得してみた。
上は、データベース上の全てのデータを取得し、
下は、現在ログイン中ユーザーの全てのデータを取得している。こうすることで、降順になったデータ群を取得することができる。
#デフォルト設定を変更して、並び替えしたいとき
###モデ
【超初心者的Railsアプリ作成】土台作り Part.2
[【Railsアプリ】土台作り Part.1](https://qiita.com/masarashi/items/f7703cb8a6d9f79d1c7a) の続きです。
Part.1でデータベースのデータ登録をrails consoleで行いましたが、実際にはデータの登録はアプリの画面で行われます。ここではアプリの画面からデータベースのデータ登録や更新を行うための準備を行います。
##コントローラ作成
MVCのCです。
コントローラ名は複数形にします。ここではmenusにしています。“`rails:ターミナル
% bin/rails g controller menus index
“`##☆コントローラ削除
コントローラ名を間違ってしまった場合に
“`rails:ターミナル
% bin/rails destroy controller menus
“`##ルーティング設定
〜〜〜doとendの行の間は削除して、1行追加します。これだけでいろいろなルートが設定されます。Progateと全然違うやん!!ってとまどいました。
“`rails:conf
【超初心者的Railsアプリ作成】土台作り Part.1
[【Railsアプリ】はじめにやること(超初心者)](https://qiita.com/masarashi/items/374b2e2a9ee5398e1f24) が終わったら、次は土台づくりです。このパートは何回かに記事を分けます。
まずはデータベースにデータを登録できるようにします。なお、一度にいくつも覚えられないのでバリデーションは考慮していません。
##モデルの作成
MVCのMです。
モデル名は単数形にします。テーブルなどの名前は自動的に複数形で作成されます。
(ramenみたいな日本語は複数形にならなかった。。。)ここではモデル名をmenuにしています。
“`rails:ターミナル
% bin/rails g model menu
“`カラムも最初に作成したい時
“`rails:ターミナル
% bin/rails g model menu title:string body:text
“`##☆モデルの削除
名前を間違ってしまった場合に
“`rails:コンソール
% bin/rails destroy model menu
“`#
【超初心者的Railsアプリ作成】はじめにやること
Railsの勉強を初めて約4ヶ月(Bootstrapとかに寄り道した時期もありました)、Progateを終えた後は参考書で勉強をしていましたがモチベーション低下してきたので、自分なりにアプリを作り始めました。これまでやってきたことをメモ帳に書いていましたが、せっかくなので記事にしていきます。
##OS
Catallina 10.15.6
##バージョン
“`ruby:コンソール
% rbenv -v
rbenv 1.1.2% ruby -v
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin19]% rails -v
Rails 6.0.3.2% psql –version
psql (PostgreSQL) 12.3
“`##PostgreSQL起動
“`ruby:コンソール
% brew services start postgresql
“`##アプリケーション新規作成
メールの機能は使わないのでオプションをつける
“`ruby:コンソール
% rails new
掲示板投稿機能の作成の確認ポイント
自分用です!
掲示板作成時はアソシエーションを活用して、処理を短く記載していること、
・GOOD アソシエーションを活用
@board = current_user.boards.build(board_params)・BAD 初期化した後に値を代入
@board = Board.new(board_params)
@board.user_id = current_user.id・BAD 初期化する際のパラメータをmerge
Board.new(board_params.merge(user_id: current_user.id))フォームのテキストエリアの入力幅はstyleで指定するのではなく、rows:で設定すること styleは個別のHTMLに直接記載しせずに、cssファイルから適用させる形式の方が管理しやすいため
・BAD styleで高さを指定して、入力幅を設定している
<%= f.text_area :body, class: 'form-control', style: 'height: 200px', row: 10 %>
defaults.message
自分用です!
ja.ymlのdefaults.messageに定義したものを呼び出します。
“`
ja:
defaults:
login: ‘ログイン’
register: ‘登録’
logout: ‘ログアウト’
create: ‘登録する’
message:
require_login: ‘ログインしてください’
created: “%{item}を作成しました”
not_created: “%{item}を作成できませんでした”
“`“`
ja:
activerecord:
models:
user: ‘ユーザー’
board: ‘掲示板’
“`“`
t(‘defaults.message.created’, item: Board.model_name.human)
“`modelのboardから引っ張るには、Board.model_name.humanとかく。
itemという変数を定義することによって、itemの中身を変えるだけで
refileのattachment_image_tagで画像がうまく表示されない場合に
##この記事について
画像を表示させるためにrefileのattachment_image_tagで画像が表示されない時があって、いろいろ調べて試行錯誤した結果安定して?表示されるようになったので投稿##問題のエラー
白い雲と青い空、そして可愛らしい山を描いた画像で癒されそうだが、こいつは精神を破壊させてくる悪魔の画像。
この悪魔が表示されていた時のコードは以下の通り“`ruby:qiita.rb
<%= attachment_image_tag [_idを除いたカラム名], :image, :fill, 横幅数値, 縦幅数値, format: '識別子(jpegなど)' %>
“`##**僕の場合**の解決法
attac
Railsのルーティングついて
# 概要
Railsアプリケーションでのルーティングについてまとめました。# 今回のゴール
『ルーティングの効果』と『実践的な使い方』を確認することです。# <1>ルーティングの効果
**結論**
・HTTPリクエストをもとに、コントローラーとアクションに処理を渡せるようになる。
・ヘルパーメソッドにより、コントローラーやビューでパスとURIを作成できるようになる。## コントローラーとアクションの指定方法
ルーティングではクライアントからのHTTPリクエストを下記のコードで振り分けます。“`:ルーティングのイメージ
[HTTPメソッド] ‘[URIのパス]’, to: ‘[コントローラー名]#[アクション名]’例) get ‘samples’, to: ‘samples#index’
“`つまり、今回の例ですと…
クライアントから**『GETメソッド』**で**『samplesのパス』**でアクセスがきたら
Railsアプリケーションの**『samplesコントローラー』**の**『indexアクション』**で処理をしますという意味になり
Railsでの複数カラムの追加・削除とまとめて行う方法
自分用です!
複数のカラム追加していきます。
まずはマイグレーションファイルを作ります。
“`ruby:ターミナル
rails g migration add_columns_to_users
“`複数のカラムを追加する際、特定のカラムを意識するわけでもない場合は「add_columns」などとしておけばいいでしょう。
“`
class AddColumnsToUsers < ActiveRecord::Migration[5.2] def change add_column :users, :last_name, :string add_column :users, :first_name, :string end end ``` rails db:migrateをすれば追加される。
EC2にデプロイしたアプリケーションからシークレットキーを生成できない
#エラー
EC2にgithubからアプリをデプロイ完了した状態で
“`
rake secret
“`を実行したところ下記のようなエラーが
“`
You must use Bundler 2 or greater with this lockfile.
“`Bundlerのバージョンがおかしいのか??
#解決
EC2のでデプロイしたアプリのディレクトリで下記の3つを実行すると
無事シークレットキーを生成できた“`
rm Gemfile.lock
gem install bundler
bundle
“`
sorceryを使用して、ユーザー機能を作成する
自分用です!!
sorceryを使ってログイン機能を作成していきます。
## sorceryをインストール
“`ruby:Gemfile
gem sorcery
“`bundele installします。
ここで、生成されるpasswordとpassword_confirmationはcrypted_passwordカラムに対する仮想属性となっています。
user.rbにif: -> { new_record? || changes[:crypted_password] }が記載されています。
これにより、登録したユーザーがパスワード以外のプロフィール項目を更新したい場合に、パスワードの入力を省略させることができます。ajax通信にしない場合、
form_withでは、local: trueが指定されていること。ログインしているか、の判定では、<% if current_user %>ではなく、sorceryで使える、
<% if logged_in %>を使っていく。新規登録ページのルーティングにはresourcesを使う。
“`ruby:rou