Ruby on Rails + Docker + Capistrano + Puma + Nginx AWS EC2へデプロイ方法のメモ
AWS EC2 インスタンスの準備
AWS コンソール (https://ap-northeast-1.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-1#Instances:sort=instanceId)にアクセスする
「Launch Instance」をクリックする
Step 1: Choose an Amazon Machine Image (AMI)
「Ubuntu Server 16.04 LTS (HVM), SSD Volume Type 64bit (x86」を選択する
スクリーンショット 2020-05-03 2.35.38.png https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35605/8735bc25-93b2-dc3b-baaa-3acf7f60cca0.png
Step 2: Choose an Instance Type
「t2.micro」を選択する
スクリーンショット 2020-05-03...
Updated by Yuto at 2022-01-29 21:22
Ruby on RailsアプリでAWS SESを使ってメールを送信する方法(設定から実装まで)
前はずっとSendGrid経由でメール送信機能を使っていましたが、せっかくAWSでアプリケーションをデプロイするのでAWSのサービスを使いたかったです。その為メール送信機能をSendGridからAWS SESに移動しました。
では、簡単に言うと Amazon Simple Email Service (SES) は、デベロッパーが任意のアプリケーションでメールを送信できるようにする、費用対効果の高い、柔軟でスケーラブルなメールサービスです。
SES設定
sandboxから移動
新規AWSアカウントではSESの制御があるます、確認済みのアドレスしか送信できなくて、1日最大200メールや1秒にあたり1メールなどの制限があります。
なので本番で使用できるにはリクエストをしなければなりません。
リクエスト方法はまずこのリンクにアクセス:http://aws.amazon.com/ses/fullaccessrequest
自分の場合は画像のように入力したら半日後で承認されました。
スクリーンショット 0003-10-30 11.54.00.png...
Updated by Yuto at 2022-01-29 21:22
Rails 7 + Devise + omniauth-facebook + omniauth-twitterでログイン機能作成(基本から詳細まで)
この記事は devise、omniauth-facebook、omniauth-twitterのGemを使って、メールとFacebookとTwitterでログイン機能を作ります。
まずはFacebookとTwitter側の設定から始めます。
Facebook側の設定
アプリを作成URL:https://developers.facebook.com/apps/create (https://developers.facebook.com/apps/create)
スクリーンショット 0003-11-07 10.58.46.png https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35605/a6ba4d02-6d33-f626-6d24-eac36edbc97e.png
スクリーンショット 0003-11-07 10.59.42.png...
Updated by Yuto at 2022-01-29 21:22
Ruby on Rails 7でselect2を導入方法
Webpackerの場合はこちらの記事です (https://qiita.com/YutoYasunaga/items/5cbbd546f51d8b37dac8)
select2とjQueryインストール
yarn add select2 jquery
select2 コントローラー作成
```javascript:app/frontend/controllers/select2_controller.js
import { Controller } from "@hotwired/stimulus"
import $ from 'jquery';
import 'select2/dist/css/select2.min.css'
import Select2 from "select2"
export default class extends Controller {
connect() {
Select2() // 自分の場合ではこれを呼ばないと動きません。
$('.select2').select2();
...
Created by Yuto at 2022-01-26 19:57
【Ruby on Rails】Webpackerにselect2導入メモ
Ruby on Rails 7 (stimulus) の場合はこちらの記事です (https://qiita.com/YutoYasunaga/items/9044a3d590f7d8f1f41d)
jQuery導入
select2を使う為に、jQueryが必要です。
jQuery導入方法 (https://qiita.com/YutoYasunaga/items/9a7eaa0a4ca898535912)
select2導入
:terminal
yarn add select2
```javascript:app/javascript/packs/application.js
import 'select2'
import 'select2/dist/css/select2.css'
document.addEventListener('turbolinks:load', () => {
$('.js-select').select2({
placeholder: 'Select an option',
allowClear: true
...
Updated by Yuto at 2022-01-26 19:57
Ruby on Rails 7 search selectbox with select2 and stimulus
Install select2 and jQuery
yarn add select2 jquery
Create select2 controller
```app/frontend/controllers/select2_controller.js
import { Controller } from "@hotwired/stimulus"
import $ from 'jquery';
import 'select2/dist/css/select2.min.css'
import Select2 from "select2"
export default class extends Controller {
connect() {
Select2()
$('.select2').select2();
}
}
```
app/frontend/controllers/index.js
import Select2Controller from...
Created by Yuto at 2022-01-26 19:37
Cách học để đậu chứng chỉ Ruby Gold trong một tháng
Ở phần trước mình có viết bài giới thiệu về cách học để đậu chứng chỉ Ruby Silver trong một tháng, phần tiếp theo này sẽ là Ruby Gold.Chứng chỉ Ruby Gold là gì?
Ruby Association Certified Ruby Programmer Gold version 2.1 hay còn gọi tắt là Ruby Gold hoặc Ruby Vàng, là một chứng chỉ được cấp bởi tổ chức phi lợi nhuận Ruby Association, được điều hành bởi người sáng tạo ra ngôn ngữ Ruby - Yukihiro Matsumoto. Điều kiện để được công nhận đậu Ruby Gold là bạn đã đậu Ruby Silver và trong kỳ thi...
Updated by Yuto at 2022-01-25 12:35
【Ruby on Rails】Dùng Mailcatcher để test mail ở môi trường development, docker
Mailcatcher là một công cụ rất là tiện lợi và dễ dùng cho việc test mail ở môi trường development.
Thông tin cụ thể thì các bạn có thể xem trên trang chủ tại đây: https://mailcatcher.me (https://mailcatcher.me)
Cài đặt Mailcatcher
gem install mailcatcher
Khởi động Mailcatcher
mailcatcher
Sau đó truy cập vào http://localhost:1080 để mở trang quản lý mail
Thiết lập trong Rails
ruby:config/environments/development.rb
config.action_mailer.delivery_method =...
Updated by Yuto at 2022-01-25 11:12
Một số tính năng mới và sự thay đổi của phiên bản Ruby on Rails 6.1
Phiên bản Ruby on Rails 6.0 chính thức được ra mắt vào tháng 8 năm 2019, và ngày 9/12/2020 phiên bản 6.1 đã được release.
Trong phiên bản 6.1 mới này, có những cải tiến tập trung cho những tính năng mới của Active Record và database, ví dụ như có thể kết nối nhiều database, horizontal sharding, strict loading, thực hiện xóa bất dồng bộ ở background job...v.v...
Điểm lưu ý
Để sử dụng được version Ruby on Rails 6.1 thì cần version Ruby 2.5 trở lên.
Những tính năng mới
Cải tiến về thay đổi kết...
Updated by Yuto at 2022-01-25 11:12
Cách học để đậu chứng chỉ Ruby Silver trong một tháng
Phần tiếp theo: Cách học để đậu chứng chỉ Ruby Gold trong một tháng
Chứng chỉ Ruby Silver là gì?
Ruby Association Certified Ruby Programmer Silver version 2.1 hay còn gọi tắt là Ruby Silver hoặc Ruby Bạc, là một chứng chỉ được cấp bởi tổ chức phi lợi nhuận Ruby Association, được điều hành bởi người sáng tạo ra ngôn ngữ Ruby - Yukihiro Matsumoto.
Mục đích lấy chứng chỉ Ruby Silver
Đối với bản thân mình, người bắt đầu tiếp xúc với ngôn ngữ lập trình Ruby từ năm 2013 thì chứng chỉ này có ý...
Updated by Yuto at 2022-01-25 11:11
[Rails App] Bootstrapの開発環境を自動的に作る (bootstrap-generators)
>>> デモサイトはこちらです <<< (https://yuto-bootstrap-environment.herokuapp.com/)
参考
bootstrap-generators (https://github.com/decioferreira/bootstrap-generators)
この記事は早くBootstrapの開発環境を作る方法をご紹介させていただきます。
```ruby:Gemfile
gem 'bootstrap-sass'
group :development do
gem 'bootstrap-generators'
end
```
Bootstrapをインストール
rails g bootstrap:install [オプション]
オプション
-e=erb/haml/slim デフォルトは「ERB」
-se=css/scss/less デフォルトは「SCSS」
ERB以外の場合、views/layouts/application.html.erbを削除してください。
テストの為にScaffoldを作ります
rails g scaffold...
Created by Yuto at 2022-01-21 17:42
私の使うGem
```ruby:Gemfile
#! vim: ruby
Yuto's Gemfile
source 'https://rubygems.org'
gem 'rails'
Authentication
gem 'devise' # Flexible authentication solution for Rails with Warden
gem 'devise-i18n' # Translations for the devise gem
gem 'omniauth-facebook' # OmniAuth strategy for Facebook
gem 'omniauth-twitter' # OmniAuth strategy for Twitter
gem 'omniauth-google-oauth2' # OmniAuth strategy for Google
gem 'omniauth-tumblr' # OmniAuth strategy for Tumblr
gem 'omniauth-amazon' # OmniAuth strategy for...
Created by Yuto at 2022-01-21 17:42
Ruby on Rails で画像をアップロード(paperclip, fog)
>>> サンプルアプリケーションはこちらです <<< (https://renshu-upload-image.herokuapp.com/)
今日は Ruby on Rails で画像をアップロード出来るサイトの作り方をご紹介させて頂きます。
OPTIONAL: Bootstrapの開発環境を自動的に作る (http://qiita.com/YutoYasunaga/items/f53e62d850570eb85e4f)
まず、ImageMagick をインストールする必要がありますので、ImageMagick のないパソコンならインストールしてください。
Mac OS: brew install imagemagick
Ubuntu: sudo apt-get install imagemagick
では、始めましょう!
ruby:Gemfile
gem 'paperclip'
gem 'fog'
Article というScaffoldを作る:
rails g scaffold Article title content:text
それでpaperclip photo...
Created by Yuto at 2022-01-21 17:42
Ruby on Rails で vote (like, dislike, unvote) 出来るアプリケーションを作る (acts_as_votable)
>>> デモサイトはこちらです <<< (https://yuto-vote-system.herokuapp.com)
>>> 参考:Bootstrapの開発環境を自動的に作る <<< (http://qiita.com/YutoYasunaga/items/f53e62d850570eb85e4f)
このアプリケーションでは、ユーザーはLike、Dislike、またはUnvote出来る機能を追加したいと思います。
Screen Shot 2015-05-31 at 23.48.46.png https://qiita-image-store.s3.amazonaws.com/0/35605/4ae10c18-36d9-52a2-7088-117b5518dee8.png
ruby:Gemfile
gem 'acts_as_votable'
gem 'devise'
ユーザー登録を作成
Deviseをインストール:
rails g devise:install
ユーザーモデルを作る:
rails g devise...
Created by Yuto at 2022-01-21 17:42
【Ruby on Rails】filter_parameters.rbにログで見られたくないパラメーターを追加する
ruby:config/initializers/filter_parameters.rb
Rails.application.config.filter_parameters += [:password, :credit_card_number]
Created by Yuto at 2022-01-21 17:42
【Gem】kaminari で一つのページで複数のペイジング
Controller
ruby
@topics = Topic.page(params[:topics_page]).per(5)
@activities = Activity.page(params[:activities_page]).per(10)
View
ruby
= paginate @topics, param_name: 'topics_page'
= paginate @activities, param_name: 'activities_page'
Created by Yuto at 2022-01-21 17:42
【 Ruby on Rails 】自分のFlash message をカスタムする
ruby:app/controllers/application_controller.rb
class ApplicationController
add_flash_types :good, :bad
end
ruby:app/controllers/users_controller.rb
class UsersController < ApplicationController
def create
redirect_to root_path, good: "Created user!"
end
end
ruby:app/views/users/index.html.erb
<%= good %>
Created by Yuto at 2022-01-21 17:42
【Ruby on Rails】Foundation5 flash message with slim
ruby:app/views/layouts/_message.html.slim
- flash.each do |name, msg|
- if msg.is_a?(String)
div data-alert='' class="alert-box round #{name.to_s == 'notice' ? 'success' : 'alert'}"
= content_tag :div, msg
a href='#' class='close' ×
Created by Yuto at 2022-01-21 17:42
【 Ruby on Rails】複数のOmniauth
>>> アプリケーションはこちらです <<< (http://renshu-multiple-omniauth.herokuapp.com/)
参考:Bootstrapの開発環境を自動的に作る (http://qiita.com/YutoYasunaga/items/f53e62d850570eb85e4f)
Screen Shot 2015-05-27 at 20.28.11.png https://qiita-image-store.s3.amazonaws.com/0/35605/d4659969-7c74-3230-b216-478692ddab53.png
ruby:Gemfile
gem 'omniauth-facebook'
gem 'omniauth-twitter'
gem 'omniauth-google-oauth2'
gem 'omniauth-tumblr'
gem 'omniauth-amazon'
```ruby:config/devvariables.rb
ENV['FACEBOOKKEY'] =...
Created by Yuto at 2022-01-21 17:42
[Ruby on Rails] Devise + Omniauth Authentication
Sample Application (https://yuto-devise-omniauth.herokuapp.com/)
ruby:Gemfile
gem 'devise'
gem 'omniauth'
gem 'omniauth-facebook'
gem 'omniauth-twitter'
gem 'paperclip'
gem 'fog'
rails g devise:install
rails g devise User
rails g devise:controllers users
rails g migration AddAttributesToUsers name uid provider token
rails g paperclip user image
ruby:config/routes.rb
devise_for :users, controllers: {
omniauth_callbacks: 'users/omniauth_callbacks',
registrations:...
Created by Yuto at 2022-01-21 17:42