- 0.0.1. TodoじゃなくてNoTodoアプリ作ってみた。(とridgepoleの注意点)
- 0.0.2. Googleアナリティクスを活用し、サイト分析を行う-1章
- 0.0.3. DockerでRailsチュートリアルのローカル開発環境構築(Rails 6 + PostgreSQL + Webpack)
- 0.0.4. Rails herokuにデプロイ後にAPIキーが見当たらなかった時の解決方法
- 0.0.5. Puma – Nignx って環境で rails s -e production -d でうまくいかない時の逃げ道
- 0.0.6. 【orderメソッド】Railsで、データの並び順を設定する
- 0.0.7. syntax error [each do end のエラー]
- 0.0.8. [ruby]ドリルアウトプット
- 0.0.9. Railsのルーティングついて
- 0.0.10. activerecord-importでUpdateする方法
- 0.0.11. rspec spec時のNameError: undefined local variable or method `config’ for main:Objectの対処法
- 0.0.12. EC2インスタンスにrubyの実行環境導入中のエラー
- 0.0.13. rbenvでRuby自体のVersion管理をする
- 0.0.14. PayPal Ruby SDKのSSL_connectエラーの解消方法
- 0.0.15. ActiveModel::UnknownAttributeError: unknown attribute ‘foreign_type’ for PaperTrail::VersionAssociation のエラー対応
- 0.0.16. Sinatraで家族用todoリストを作る
- 0.0.17. アルファベットを26進数に変換+配列の長さについて
- 0.0.18. 【Rails】Slimを使ってみた
- 1. タイトル
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 |
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でやってみた記
Rails herokuにデプロイ後にAPIキーが見当たらなかった時の解決方法
#実装した機能
`gem geocoder` を使って入力した住所から緯度、経度を取得。
Google API Keyを取得してアプリ上に地図表示。#発生した問題
開発環境では問題なく動作していたがデプロイ後に本番環境で
動作チェックすると入力した住所に対して地図が表示されず何も返してくれなかった。#推測してみた
コンソールをチェックすると`No Apikeys`、`Invalidkey`と出ていたので、APIキーが原因であると推測。
APIの知識が不足していたので開発環境で書いているコードの問題かGoogle APIの設定の方に問題があるのか?
と考えて深掘りしていくが解決出来そうな記事は見当たらず。ちなみにAPIキーは`gem “dotenv-rails”`を使い、`.env`の中の環境変数に入れて`.gitignore`の中に隠してました。
Chromeの拡張機能であるGoogle Maps Platform API Checkerを入れてみると、
エラーの文字と、APIキーを入れたコードの一文が表示されているのを確認できたがAPIキー自体が見当たらない
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モデルというデータを取得してみた。
上は、データベース上の全てのデータを取得し、
下は、現在ログイン中ユーザーの全てのデータを取得している。こうすることで、降順になったデータ群を取得することができる。
#デフォルト設定を変更して、並び替えしたいとき
###モデ
syntax error [each do end のエラー]
上記のエラーがでました!
”syntax error”と言い、
Rubyの繰り返し処理の
とあるものが抜けていると
このようなエラーがでます!上記を見てみると
“each do”にたいしての
“end”がないんです!”end”をつけると
ちゃんと機能します!
[ruby]ドリルアウトプット
## 内容
クラスとインスタンスの概念を用いたコードの作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675525/9c2fd838-c198-3c81-2707-f8f867992ad8.png)
上記のコードに追加を行い、以下の出力結果を得られるようにしてください。ただし、クラスとインスタンスを使用するものとします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675525/cb8be859-49a6-5fd1-4b64-47c66a65c31d.png)## 実装
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675525/09ffd083-71b4-b974-2cd4-40d1ec1d63a5.png)
まず、3行目〜7行目のinitializeメソッドで宣言されたインス
Railsのルーティングついて
# 概要
Railsアプリケーションでのルーティングについてまとめました。# 今回のゴール
『ルーティングの効果』と『実践的な使い方』を確認することです。# <1>ルーティングの効果
**結論**
・HTTPリクエストをもとに、コントローラーとアクションに処理を渡せるようになる。
・ヘルパーメソッドにより、コントローラーやビューでパスとURIを作成できるようになる。## コントローラーとアクションの指定方法
ルーティングではクライアントからのHTTPリクエストを下記のコードで振り分けます。“`:ルーティングのイメージ
[HTTPメソッド] ‘[URIのパス]’, to: ‘[コントローラー名]#[アクション名]’例) get ‘samples’, to: ‘samples#index’
“`つまり、今回の例ですと…
クライアントから**『GETメソッド』**で**『samplesのパス』**でアクセスがきたら
Railsアプリケーションの**『samplesコントローラー』**の**『indexアクション』**で処理をしますという意味になり
activerecord-importでUpdateする方法
微妙に書いてなかったので自分用にメモ
“`Ruby
update_users = []
users.each do |user|
user.name = “John”
user.email = “test@mail.com”
update_users << user end # ここのon_duplicate_key_updateに更新したい列名を渡す User.import update_users, on_duplicate_key_update: [:name, :email] ``` GemのデフォルトはINSERTをする用途で`on_duplicate_key_update`オプションで列名を指定してあげることでキーが被ったときに指定した列が更新される(Upsertされる)という理解をした。 なので元々あるユーザーだけを更新して渡せばUpdateだけされるという感じ。 ちなみにDBによってこのオプションの指定の仕方は違うらしい https://github.com/zdennis/activerecord-import/#duplicate-key-u
rspec spec時のNameError: undefined local variable or method `config’ for main:Objectの対処法
#### [rails5中級チュートリアル](https://techracho.bpsinc.jp/hachi8833/2018_02_21/51678)中のテスト実行時に起こったエラー
####エラー文
“`ruby:ターミナル
#rsepc spec 実行時
NameError:
undefined local variable or method `config’ for main:Object
“`####原因と解決
rails_helper.rbへgemメソッドを使えるようにする記述の記述場所が誤っていた。“`ruby:rails_helper.rb
下記の記述をRSpec.configure do |config|の中に記述していなかったのが原因config.include Devise::Test::IntegrationHelpers, type: :feature
config.include FactoryBot::Syntax::Methods
Capybara.javascript_driver = :polterge
EC2インスタンスにrubyの実行環境導入中のエラー
#エラー文
下記のサイトを参考にruby環境を構築していたところ・・・
https://qiita.com/naoki_mochizuki/items/814e0979217b1a25aa3e“`
[naoki] sudo yum install \ #yumのインストール
git make gcc-c++ patch \ #cとc++のコンパイラ、gitの差分をpatchファイルに変更
openssl-devel \
libyaml-devel libffi-devel libicu-devel \
libxml2 libxslt libxml2-devel libxslt-devel \
zlib-devel readline-devel \
mysql mysql-server mysql-devel \
ImageMagick ImageMagick-devel \
epel-release
“`色々とエラーが発生
“`
-bash: openssl-deve: コマンドが見つかりません
-bash: libxml2: コマンドが見つかりません
※エラー文は
rbenvでRuby自体のVersion管理をする
# これは何?
Rubyのインストール時にVersion管理ツール経由でインストールするときのメモです。Ubuntuでのインストールで説明しています。# 手順
## rbenvをインストールする
“`bash
$ sudo apt-get update
$ cd
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
$ echo ‘export PATH=”$HOME/.rbenv/bin:$PATH”‘ >> ~/.bashrc
$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
$ echo ‘export PATH=”$HOME/.rbenv/plugins/ruby-build/bin:$PATH”‘ >> ~/.bashrc
$ source ~/.bashrc
“`## Rubyをインストール
好みのVersionを指定してインストールして、そのVersionを使うように指定する。“`bash
PayPal Ruby SDKのSSL_connectエラーの解消方法
# はじめに
最近、PayPal Ruby SDKでエラーが出るようになったが、その解決方法はGoogle検索しても日本語情報は無く、英語もほとんどHitしないのでメモ。ここ数日の出来事らしい。`SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate)`
# 1.原因
原因はPayPal側にある。[PayPal Ruby SDK](https://github.com/paypal/PayPal-Ruby-SDK) GemはSSL証明書を内部にPackageしてしまっており、この証明書が最近Removeになった事が原因。PayPalがどうして証明書をGemに入れ込むような作り方をしたのかは分からないが、SDKをハックすれば解消できる。# 2.解決方法
SDK内部の証明書にまだ有効期限内のPEMを追記してRailsサーバーを再起動すれば解消する。# 3.解決手順
## (1) PEMをダウンロード
参考記事で
ActiveModel::UnknownAttributeError: unknown attribute ‘foreign_type’ for PaperTrail::VersionAssociation のエラー対応
## 起こったこと
`rails db:migrate`したら以下のようなエラーを吐いた。
エラー文を読むと、「`VersionAssociation` テーブルに `foreign_type` カラムがない!」と怒られている。“`
ActiveModel::UnknownAttributeError: unknown attribute ‘foreign_type’ for PaperTrail::VersionAssociation“`
## 原因
paper_trailというgemをアップデートしたことで発生。
公式リポジトリのCHANGELOG.mdを見ると`foreign_type`に関する記述を発見。。
> How to Upgrade from v1.0.0 or earlier
Run rails g paper_trail_association_tracking:add_foreign_type_to_version_associations and then migrate your database.カラムを追加するマイグレーションファイルを作
Sinatraで家族用todoリストを作る
# はじめに
@kirinri さんが *[素敵な記事 – Qiita](https://qiita.com/kirinri/items/83822af364e7f922df28)* を投稿されているので、それに乗っかってみる
# 完成画面
![20200805.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538241/f81695e1-c5b1-492a-e815-6bfbcbdafad1.png)
# 工夫した点
## ユーザを削除した際、当該ユーザのTodoを削除
“`main.rb
post ‘/destroy_user’ do
Todos.where(‘users_id = ?’, params[:users_id]).destroy_all
Users.find(params[:users_id]).destroy
redirect to(‘/’)
end
“`
`activerecord`ってSQLを書かなくてもいいので素敵です。
## アイテムの角を丸くする
“`st
アルファベットを26進数に変換+配列の長さについて
#paizaの問題を解く時に参考になったものを載せます
##アルファベットを26進数に変換(1~26)
S=”abcdefghijklmnopqrstuvwxyz”
S.index(x)+1
Sで26番目までの文字列にして、実際のアルファベットがその何番目に当たるかで数字に変換してます。
(もっといいやり方ありそうです。。。。)##配列の長さ
x = [1,2,3,4,5]
x.length (=5)
(x.length -1) (=4)
一個短い長さとかでもでも使えます。
【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_タグメソッドを記述
“`haml
.header__left
= link_to “#”, class: “クラス名” do
= image_tag ‘image以下のパス’, alt: ”, height: , width: , class:
“`
テーブル作成とカラムを追加する
##テーブルにカラムを追加する
###データーベースとは?
データを保存するもの。
例えば家のようなもの。ただ家に全てのデータを一気に入れると、何がどこにあるか探すの大変です。###テーブルとは?
データの種類ごとの保存場所。
家でいうなら、部屋。
データの種類ごとに関係する場所に入れると分かりやすく管理しやすいです。
それをテーブルといいます。###テーブルの作り方
家の中に部屋があって部屋ごとに名前があるようにデータベース内のテーブルにも名前をつけます。
データベースはmodelとやり取りしてデータを取り出したり保存したりする。門番みたいなもの。
####モデルを作る
※作りたいアプリのディレクトリにいること!
% rails g model モデル名モデルに関連するファイルが作成される。
“`
invoke active_record
create db/migrate/20200315054113_create_posts.rb
create app/models/post.rb
inv