- 1. Railsでのカラムの追加
- 2. Mac ruby 2.0.0におけるDEFAULT_CERT_FILEのディレクトリ情報
- 3. openssl、curl、ruby、homebrew、rbenvインストールについての印象や覚え
- 4. ページネーション機能の実装
- 5. 参考になるRailsのプロダクトコード(OSS)5選
- 6. 初心者がwebpackを調べてまとめてみた
- 7. Secretsantasができるまで零 データベース設計
- 8. Secretsantasができるまで② トップページ
- 9. deviseを利用したフラッシュメッセージ
- 10. ERB クラスを使って変数を展開した静的ファイルを作る
- 11. docker-compose upでDBが立ち上がらないときにやったこと
- 12. Docker + Rails6 + Postgresql の開発環境を構築する
- 13. Ruby モジュールとは?
- 14. 【初心者が悩む】RubyとPHPとPythonどれが良いのか?
- 15. 『CircleCI』Rails appに、circleCIを組み込む
- 16. Ruby で HTTP リダイレクト先の URL を取得する
- 17. any?メソッドを使用してエラーメッセージの取得
- 18. 継続渡しスタイル(CPS)チートシート
- 19. 【Rails】form_withを完全に理解した
- 20. RailsでWebアプリ開発の流れをざっくり。
Railsでのカラムの追加
#カラムの追加
新しいカラムの追加(基本)
$rails g migration (行う処理+テーブル名)(追加したいカラムとデータ型など)
“`$rails g migration AddColumnToUsers name:string age:integer
“`新しいカラムにインデックスを追加
“`$rails g migration AddColumnToUsers name:string:index
“`カラムの削除
“`$rails g migration RemoveNameFromUsers name:string
“`テーブルの作成と同時にカラムの作成
“`$rails g migration CreateUsers name:string age:integer
“`
Mac ruby 2.0.0におけるDEFAULT_CERT_FILEのディレクトリ情報
過去記事でopenssl、curl、rubyをソースビルド、インストールしたMacとは別のMacがある。
MacOSX 10.11はhomebrewが動作するが削除し概ねクリーンにした。ruby 2.0.0に戻る。すると
$ ruby -ropenssl -e “p OpenSSL::X509::DEFAULT_CERT_FILE”
“/System/Library/OpenSSL/cert.pem”OpenSSL $ ls -la
total 8
drwxr-xr-x 6 root wheel 204B 2 5 2016 .
drwxr-xr-x 82 root wheel 2.7K 8 28 2018 ..
drwxr-xr-x 2 root wheel 68B 2 5 2016 certs
drwxr-xr-x 8 root wheel 272B 2 5 2016 misc
-rw-r–r– 1 root wheel 9.2K 2 5 2016 openssl.cnf
drwxr-xr-x
openssl、curl、ruby、homebrew、rbenvインストールについての印象や覚え
●備忘録 メモ書き 証拠のログは殆ど無し
2020年08月上旬にautoconfからopenssl、curl、rubyまでソースインストール出来た。
openssl curl(wget)Ruby等々のSSL通信に悩まされてきたが殆ど解消したかもしれない。kindai.rbを使い始めた時期(2015〜2017?)は記憶にない。
qiitaでの質問は2017年が最初。(他に5chで質問したかも?)2020年07月までに行ったopenssl curl(wget)Ruby等の環境構築でログが残ってないが、覚えていることを書いておく。●事象
homebrewのImageMagick インストールをみていると大量のコマンドとライブラリがインストールされる。依存関係もあるらしく自分ではソースビルドが出来ないと考えていた。
ー>実際は簡単だった。手間と時間がかかるだけ。homebrewはリンク切れや不具合を起こす。数年に一回程度。homebrewの再インストールの経験が「たしか3,4回数/一台のMac」ある。
openssl又はcurlインストールにおいて、homebrewビルドでも
ページネーション機能の実装
## バージョン
・ruby 2.5.7
・Rails 5.2.4.3## ページネーション機能を使って1ページにつき10件だけ表示させたい
イメージはこんな感じ
## まずgemをインストール
ページネーション機能の実装には、gemの「kaminari」を使います。
まず、gemfileでkaminariを記述する。
Gemfileに追記できたら、ターミナルでbundle installを実行して、kaminariをインストールします。## さらに以下のコマンドを実行
kaminariの設定ファイルを作成の為、下記を実行します。このファイル内にある数字を動かせれば1ページにつき、何件表示出来るか設定出来ます。
参考になるRailsのプロダクトコード(OSS)5選# はじめに
「この設計でいいのかな〜」「クラス名や変数名はこれでいいのかな〜」と思ったときに参考にできそうな、Railsで書かれたOSSを5つピックアップしました。# 参考になるRailsのプロダクトコード(OSS)5選
## GitLab
![gitlab-blog-cover.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459522/d718327f-fcc5-b4f2-be41-a1a352ef312f.png)– GitHub: https://github.com/gitlabhq/gitlabhq
– Webサイト: https://about.gitlab.com/
– GitHubみたいな、Gitリポジトリのホスティングサービス
– 今回紹介する5つの中で、おそらく一番大規模なアプリ## RubyGems.org
![スクリーンショット 2020-08-08 22.23.19.png](https://qiita-image-store.s3.ap-northeast-1
初心者がwebpackを調べてまとめてみた
##この記事について
Rails6でポートフォリオを作成していたが、webpackを理解できずに開発を進めていってたから勉強のまとめとして投稿##参考URL
https://qiita.com/kamykn/items/45fb4690ace32216ca25
https://note.com/billion_dollars/n/n596fecfdeb2e
https://qiita.com/ashketcham/items/48d64e960d436f8b6f78##webpackとは
一言でまとめると**Node.jsで、サーバーサイドで動かすモジュールバンドラーツール**のこと###さて、いきなり知らん単語ばかりが並んで思考が停止しそうになるぜ。
このwebpackの説明文読んだときの頭の中を表現すると、「Node.jsって美味しいの???」
「モジュールとは・・・」ここは落ち着いて知らん単語を調べるのみ!!!!
####Node.jsとは・・・
**サーバサイドで動
Secretsantasができるまで零 データベース設計
更新予定
Secretsantasができるまで② トップページ
更新予定
deviseを利用したフラッシュメッセージ
# hamlを使った記述
サインインやログアウトをした際に、画面上部に”ログインしました。” ”ログアウトしました。”のようなメッセージを表示できるようにする。
deviseを使用すると、ログイン時などに表示させるメッセージが「flashオブジェクト」に自動で格納されます。flashオブジェクト内には、複数のメッセージがハッシュのように「キー」「バリュー」形式で保存されています。
### ①メッセージ用のviewを用意
フラッシュメッセージ用のビューファイル_notifications.html.hamlをviews/layoutsに配置し、application.html.hamlのbody内でrenderで読み込む。“`ruby:_notifications.html.haml
.Notification
– flash.each do |key, value|
= content_tag :div, value, class: key
“`
“`ruby:application.html.haml
%body
= render ‘layouts/
ERB クラスを使って変数を展開した静的ファイルを作る
ERBクラスを使って、Railsの html.erb ファイルみたいに変数展開したものを、静的ファイルとして保存したいと思います。
状況としては、例えば、ユーザーごとにプレファレンス設定で、好みのスタイルシートの設定を持っているんですが、一旦設定されれば、変更があるまではスタイルシート自体はそのユーザー専用の静的ファイルにして読み込んだ方が効率的であるということで。
例えば、こんな変数を含んだスタイルシートを書きます。
“`css:_style.css.erb
body {
background-color: <%= bg_color %>;
}
.header {
color: <%= title_color %>;
}
.text {
color: <%= text_color %>
}
“`ActiveRecordで読み込んだプレファレンス設定が、
@preference というオブジェクト変数で、@preference.bg_color, @preference.title_color, @preference.text_color を持つとすれば
docker-compose upでDBが立ち上がらないときにやったこと
dockerで環境構築をし、サーバーを起動しようと`docker-compose up`をすると
`Mysql2::Error::ConnectionError: Unknown MySQL server host ‘db’ (-2)`というエラーが出てしまう。ターミナルにて、エラーログを確認すると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/484801/48df7163-8824-1e10-4bac-96a59217265d.png)
何かが原因でDBがシャットダウンしてしまっている模様。`privilege tables`なのでsudoで作成するユーザのテーブル?
なぜdockerでこの内容のエラーが出る?
と色々疑問に思ったが、とりあえず一度全てのvolumeを削除してみることに。## 解決策
①volumeのIDを調べる“`
$ docker volume ls
DRIVER VOLUME NAME
local
Docker + Rails6 + Postgresql の開発環境を構築する
# 前提
Rails環境を構築していないチームメンバーも環境構築に手間をかけずにローカルで簡単にプロジェクトを動かせるようにとDockerを導入しました。私自身はローカルにRails環境を構築しているため、プロジェクト作成はローカルで行い、Dockerとローカル直のいずれも動作できるようにしました。
Dockerはすでにインストールされているものとします。# 環境
– macOS Catalina 10.15.4
– Ruby 2.7.1
– Rails 6.0.3.2
– PostgreSQL 12.3
– Docker version 19.03.12# プロジェクト新規作成
“`
$ mkdir myapp; cd $_
$ rails new . –skip-coffee –skip-turbolinks –database=postgresql
“`# 環境変数を管理するdotenv-railsを導入
環境変数によって、Dockerで動かすかローカル直で動かすか選べるようにします。“`ruby:Gemfile
gem ‘dotenv-rails’
Ruby モジュールとは?
# モジュールとは?
モジュールとは、処理を1つにまとめたものである。“`ruby
# 例:足し算、引き算の処理をまとめたCaluculateモジュール
module Calculate
def add(a, b)
a + b
enddef sub(a, b)
a – b
end
end
“`# モジュールとクラスの違い
モジュールとクラスは似ているが、以下のような違いがある。* モジュールはインスタンスを作れない
* モジュールは継承できない
* クラスは処理とデータを持つが、モジュールは処理だけを持つ# モジュールの用途
モジュールは以下のような用途で使用される。
## 名前空間の提供
同じクラスでも別の名前のモジュールの中に入れることで別のクラスとして使用することができる。“`ruby
# 例:同じImageクラスを別のモジュールに含めて違うクラス(User::ImageとPost::Image)として扱う
module User
class Image
def self.hoge
puts
【初心者が悩む】RubyとPHPとPythonどれが良いのか?
# まずはじめに
プログラミングをやってみようとしてまず考える事が「どのプログラミング言語から初めよう?」というところではないでしょうか。そしてググっていくとRubyというプログラミング言語が真っ先に情報として入ってくるのではないでしょうか?
Rubyが真っ先に初心者に引っかかる理由は何と言っても「プログラミングスクールの殆どがRubyを激推ししているから」に尽きます。
ちなみに更にググってみるとRubyと似た言語にPHPとPythonがあるのです。
一体どの言語を勉強すれば良いのでしょうか?
## RubyとPHPとPythonのイメージ
まず、殆ど知識が無い状態の私が持っていたイメージ。
* Ruby – 初めて耳にする。
* PHP – 古臭い。
* Python – 初めて耳にする。結果、なんとなくPHPは聞いたことがある…という程度です。私の場合は、ワードプレスでブログ運営していた時期が少しばかりあったのでPHPというプログラミング言語の存在は知っていました。
PHPは古臭いと書きましたが、ググってみると、
* Ruby – 1993年2月24日生
『CircleCI』Rails appに、circleCIを組み込む
## やりたいこと
1. pushした際に、testを走らせsuccess or failをslackに通知。
2. masterに、mergeされた際は1をやった後に、deploy jobを走らせsuccess or failをslackに通知## 必要なこと
1. circleCIに、登録
2. circleCI監視下に置きたいRepositoryを設定
3. credentials.ymlを使って環境変数を管理している場合circleCIにmaster.key用の環境変数を作る
4. capistranoによる自動deploy flowを実現するために、circleCIに秘密鍵を登録するmaster.keyの登録
see -> https://qiita.com/murata0705/items/9c99fc715d8b987a5b6e
SSH鍵の登録
see -> https://circleci.com/docs/ja/2.0/add-ssh-key/#%E6%89%8B%E9%A0%86## 参考
“`yaml:.circleci/config.yml
v
Ruby で HTTP リダイレクト先の URL を取得する
## 概要
– Ruby で HTTP リダイレクト先の URL を取得する
– 動作確認環境: Ruby 2.7.1 + macOS Catalina## ソースコード
get_redirect.rb というファイル名で以下の内容を保存する。
“`get_redirect.rb
require ‘net/http’# コマンドライン引数を取得
src_url = ARGV[0]# リダイレクト先URLを取得
redirect_url = Net::HTTP.get_response(URI.parse(src_url))[‘location’]# リダイレクト先URLを出力
puts redirect_url if redirect_url
“`実行例。
“`
$ ruby get_redirect.rb https://bit.ly/3kmTOkc
https://t.co/yITSBp4ino
“`“`
$ ruby get_redirect.rb https://t.co/yITSBp4ino
https://qiita.com/niw
any?メソッドを使用してエラーメッセージの取得
エラーメッセージの表示の際に使用したメソッドをまとめたいと思います。
##any?メソッドとは
any?メソッドはすべての要素が偽である場合に false を返します。真である要素があれば、ただちに true を返します。
書き方はこのような感じ
“`ruby
p [false, nil].any? # => false
“`例えばエラーメッセージの記述を部分テンプレートに記載してオブジェクトにエラー情報がある場合のみ表示するように設定するとします。
“`ruby:app/controllers/items_controller.rb
def create
@item = Item.new(item_params)
if @item.save
redirect_to root_path
else
render :new
end
end
“`この記述でバリデーション等で保存に失敗した際に
newアクションへ戻るように設定します。“`ruby:app/views/items/new.html.er
継続渡しスタイル(CPS)チートシート
例によって,[少なくとも約1名(自分自身)には役立ちそうだった](https://qiita.com/ytaki0801/items/a0c18a78f6f8f5c8fe2a)ので,各言語の継続渡しスタイル(Continuation-passing style,CPS)のサンプル記述を記事としてまとめた.
#Python(Python 3):解説付き
対話モードで,`x`に10を代入してから,`x + 20`を評価させてみる.“`
>>> x = 10
>>> x + 20
30
“`このプログラム記述をファイルにしてPythonインタプリタに実行させても,何も表示されない.対話モード(REPL)では,式として評価されたものはその結果を表示するのに対し,ファイル実行(スクリプト)では,そのような表示は行わないためである.
“`
C:\Users\hoge>type sample.py
x = 10
x + 20
C:\Users\hoge>python sample.pyC:\Users\hoge>
“`もし,ファイル実行で評価結果を表示させたい場合は,評
【Rails】form_withを完全に理解した
#この記事の内容
– form_withメソッドの使い分け
– それに伴うストロングパラメータの取り扱い
– フォーム内容をHTTP通信させる方法#環境
“`
$ rails -v
Rails 6.0.3.1
“`
“`
$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin19]
“`#form_withとは
フォーム送信するためのUI部品をビルドするメソッドで、自動でサーバー側のコントローラアクションを切り替えてくれる特徴を持つ。
切り替える要因となるのは、オプションのmodelやurlに対する値によって変わり、以下のようになる。
| オプション|@userの中身|呼び出されるアクション|用途|
|:—|:—-|:—|:—|
| model: @user|User.new |create|ユーザー作成
| model: @user|User.find()|update|ユーザー編集
| url: sessions_path||create|ユーザーログイ
RailsでWebアプリ開発の流れをざっくり。
完璧自分用です。
#rvmでrubyのバージョン変更
“`terminal.
$ rvm install 2.5.1
$ rvm use 2.5.1
“`#バージョン指定でRailsでアプリ作成
“`terminal.
$ gem install rails -v 5.2.1 -N #6系なら6.0.2.1とか適宜。
$ rails _5.2.1_ new < app name >
“`#必要なgemをインストールしておく
“`Gemfile.
gem ‘bootstrap’, ‘~> 4.1.1’
gem ‘jquery-rails’, ‘~> 4.3.1’gem ‘bycript’ #最初から用意されているので、コメントアウトを外す
“`“`terminal.
$ bundle install
“`#サーバー立てて、ブラウザで確認
“`terminal.
$ rails s -p 任意のポート番号 #-p以下はなくてもok。特に指定しないと3000になる
“`localhost:3000(もしくは指定したポート番号)にブラウザで