Ruby on Rails 6にTailwindCSSを導入(Gemを使わず)
Yarnで必要なものをインストールする
yarn add tailwindcss@npm:@tailwindcss/postcss7-compat @tailwindcss/postcss7-compat postcss@^7 autoprefixer@^9
tailwind.config.jsファイルを生成する
yarn tailwindcss init app/javascript/packs/tailwind.config.js
javascript:app/javascript/packs/tailwind.config.js
module.exports = {
purge: [
'./app/**/*.html.erb',
'./app/**/*.html.slim',
'./app/helpers/**/*.rb',
'./app/javascript/packs/**/*.js',
],
//...
Updated by Yuto at 2022-01-20 23:55
DockerでMailcatcherを使ってRuby on Rails開発環境のメールを受信する
Mailcatcherの概要は公式サイトで色々記載されています:https://mailcatcher.me
letter_opener も Ruby on Rails 開発環境のメールがテストできるが、個人的には Mailcatcher の方が便利で使いやすいので、よく使います。
docker-compose設定
yaml:docker-compose.yml
mailcatcher:
image: schickling/mailcatcher
container_name: mailcatcher
ports:
- '1080:1080'
- '1025:1025'
Dockerを起動したら「localhost:1080」で管理画面にアクセスできます。
スクリーンショット 0003-10-30 22.10.33.png...
Updated by Yuto at 2022-01-20 23:55
Rubyで #frozen_string_literal: true というマジックコメントを付ける意味
Rubyで開発する時、rubocopを使ったらよく Missing frozen string literal comment と警告され、ファイルの一番上に「#frozenstringliteral: true」を入れることが推進されます。
簡単に説明すると、Ruby 2.3以降では、#frozenstringliteral: trueというマジックコメントを記述した場合、文字列リテラルで生成される文字列は値が変更できないようにfreezeされ、同じ内容の文字列リテラルは同一の文字列オプジェクトを返すようになります。
#frozenstringliteral: true がない場合
```ruby
text1 = 'Hello world'
text2 = 'Hello world'
puts text1.objectid == text2.objectid
```
文字列の内容が同じでもオブジェクトが別の為、falseを返します。
#frozenstringliteral: true がある場合
```ruby
#frozenstringliteral:...
Updated by Yuto at 2022-01-20 23:55
【Ruby on Rails】active_model_serializersのキーをキャメルケースにする方法
activemodelserializersはデフォルトRuby風のスネークケースでレスポンスを返しますが、キャメルケースにするのは簡単で、イニシャライザフォルダの中で定義すればいいです。
ruby:config/initializers/active_model_serializers.rb
ActiveModelSerializers.config.key_transform = :camel_lower
サーバーの再起動が必要です
Updated by Yuto at 2022-01-20 23:55
Ruby on RailsでWebpackerのエイリアスを設定する方法
```javascript:config/webpack/environment.js
const { resolve } = require('path')
environment.config.merge({
resolve: {
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('app/javascript/packs'),
'&': resolve('app/javascript/packs/components'),
},
},
})
```
サーバーの再起動が必要です。
Updated by Yuto at 2022-01-20 23:55
Ubuntuでタイムゾーンを変える方法
現在のタイムゾーン確認
date
タイムゾーン変更
sudo dpkg-reconfigure tzdata
そしてAsia/Tokyoを選択
スクリーンショット 0003-01-21 1.12.05.png https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35605/3c1d1e41-5ed4-a877-bcdd-fb689e80a644.png
最後はターミナルでdateを実行して、JSTになったら良いです。
Thu Jan 21 01:12:17 JST 2021
Updated by Yuto at 2022-01-20 23:55
【Ruby on Rails】EC2でwheneverを使ってcrontabを設定する時のハマったことの解決
wheneverというのはRuby on Railsのgemであり、crontabを設定する時によく使われています。
使い方
使い方はGithubホームページ (https://github.com/javan/whenever)に詳しく記載されていますが、主に使うのは下記になります。
Gemfileに追加
ruby:Gemfile
gem 'whenever', require: false
インストール
bundle exec wheneverize .
schedule.rbファイルの内容を確認する
whenever
開発環境でcrontabを更新する
whenever --update-crontab --set environment='development'
Capistranoに入れる
ruby:config/deploy.rb
set :whenever_roles, -> { :app }
ruby:Capfile
require...
Updated by Yuto at 2022-01-20 23:55
Gitのmasterブランチ意外、全てのブランチを一括削除する
タイトルの通りに、master ブランチ意外全て削除するのは以下のコマンドです。
'master'の代わりに他のブランチ名を変えることもできます。
:ターミナル
git branch | grep -v 'master' | xargs git branch -D
長くて覚えづらいので、aliasを作成しました。
bash:~/.zshrc
alias gbr="git branch | grep -v 'master' | xargs git branch -D"
Updated by Yuto at 2022-01-20 23:55
Ruby on Rails 6にforeman導入メモ
gem導入
ruby:Gemfile
gem 'foreman', group: :development
Procfile.devを実行するbin/server作成
bin/server
#!/bin/bash -i
bundle install
bundle exec foreman start -f Procfile.dev
コマンドを実行するProcfile.dev作成
Procfile.dev
web: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
webpacker: ./bin/webpack-dev-server
bin/serverの権限変更
chmod 777 bin/server
サーバースタート
bin/server
Updated by Yuto at 2022-01-20 23:55
PG::UniqueViolation: ERROR: duplicate key value violates unique constraintエラーの解決
PGデータベースにデータをインポートの後など、このエラーが発生する場合があります。
PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "<sample_tables>_pkey"
原因
データインポートなどの場合、PostgreSQLが指定したカラムの最大値を取ってくれず、別に保存してある最大値になってしまいます。
解決
Railsコンソールで以下のコードを実行すれば治ります。
ruby
ActiveRecord::Base.connection.tables.each do |t|
ActiveRecord::Base.connection.reset_pk_sequence!(t)
end
Updated by Yuto at 2022-01-20 23:55
【Ruby on Rails】WebpackerでBootstrap、jQueryを導入方法
Webpackerのインストール
ruby:Gemfile
gem "webpacker"
bundle install
rails webpacker:install
Bootstrapの導入
yarn add bootstrap@4.3.1 jquery popper.js
```javascript:webpacker/environment.js
const { environment } = require('@rails/webpacker')
// ↓↓↓
const webpack = require('webpack')
environment.plugins.append(
'Provide',
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
Popper: ['popper.js', 'default']
})
)
// ↑↑↑
module.exports =...
Updated by Yuto at 2022-01-20 23:55
【Ruby on Rails】WebpackerでFontAwesomeを導入方法
Gemのインストール
必須ではないですが、Viewでiconメソッドを使うならば、Gemをインストールする必要です。
ruby:Gemfile
gem "font-awesome-sass"
FontAwesomeの導入
yarn add @fortawesome/fontawesome-free
javascript:app/javascript/packs/application.js
import "@fortawesome/fontawesome-free/js/all"
css:app/javascripts/src/application.scss
@import "@fortawesome/fontawesome-free/scss/fontawesome";
>>> FontAwesome free icons (https://fontawesome.com/icons?d=gallery&m=free)
Updated by Yuto at 2022-01-20 23:55
【Ruby on Rails】Webpackerでcocoonを導入方法
cocoonを使うなら、jQueryが必要なので、WebpackerでjQueryを導入方法はこちらです:
【Ruby on Rails】WebpackerでBootstrap、jQueryを導入方法 (https://qiita.com/YutoYasunaga/items/9a7eaa0a4ca898535912)
ruby:Gemfile
gem "cocoon"
以下のファイルをダウンロードして、app/javascript/src/に保存する。
https://github.com/nathanvda/cocoon/blob/master/app/assets/javascripts/cocoon.js
javascript:app/javascript/packs/application.js
require("../src/cocoon");
Updated by Yuto at 2022-01-20 23:55
【Ruby on Rails】sidekiqの導入手順(ローカル、Heroku、AWS EC2、Docker、Capistrano)
redisを準備する
sidekiqを使う為にredisが必要です。
redisインストール(Mac OS)
brew install redis
redis起動
brew services start redis
docker-composeを使う場合
yaml:docker-compose.yml
redis:
image: redis:latest
volumes:
- redis:/data
ports:
- 6379:6379
アプリケーションにsidekiqを導入する
ruby:Gemfile
gem 'sidekiq'
ruby:config/application.rb
config.active_job.queue_adapter = :sidekiq
sidekiqを起動する
sidekiq -q default -q mailers
もしくは
yml:config/sidekiq.yml
:concurrency: 25
:pidfile:...
Updated by Yuto at 2022-01-20 23:55
【Ruby on Rails】RSpecとFactoryBotとShoulda MatchersとCapybaraを導入メモ
RSpec設定
ruby:Gemfile
group :development, :test do
gem 'rspec-rails'
end
rails g rspec:install
:.rspec
--require spec_helper
--format documentation
ruby:config/application.rb
config.generators do |g|
g.test_framework :rspec,
fixtures: false,
controller_specs: false,
view_specs: false,
helper_specs: false,
decorator_specs: false,
routing_specs:...
Updated by Yuto at 2022-01-20 23:55
Những từ ngữ độc lạ chỉ những người Việt sống ở Nhật mới hiểu
Đây là một số từ lóng, cách gọi tắt của một số từ ngữ mà những ai đã và đang sống ở Nhật sẽ thường xuyên nghe đến.
LáMột số bạn hay gọi tờ 10000 yên Nhật là "lá". Ví dụ như: "Tháng này tôi làm được 10 lá" ý nói là tháng này làm được 10 man yên.
ChồNhiều người gọi tắt chữ 店長 (tencho) là "chồ", ý là đang nói đến người chủ quán.
Bộ độiĐây là cách gọi những người lao động bất hợp pháp, những bạn trốn ra ngoài vì lý do nào đó.
Nhập ngũTừ này để chỉ việc gia nhập...
Updated by Yuto at 2022-01-08 11:47
Shupatto - Túi đựng đồ nhỏ gọn tiện dụng cho việc đi mua sắm
Từ tháng 7/2020 các cửa hàng tiện lợi ở Nhật Bản sẽ bắt đầu tính phí túi nilon.
Giá của 1 chiếc túi nilon cỡ lớn là 5 yên và cỡ nhỏ là 3 yên. Giá tiền 3 yên 5 yên nghe có vẻ rất là nhỏ bé và chẳng đáng là bao, nhưng nếu như chúng ta mua hàng ở combini thường xuyên thì số tiền trên dần dần cũng sẽ trở nên lãng phí, không những thế số lượng rác thải nilon cũng tăng lên.Chính vì thế mình bắt đầu tìm hiểu về túi thay thế cho túi nilon mỗi khi mua hàng ở combini. Có rất nhiều loại túi tiện...
Updated by Yuto at 2022-01-08 11:41
Install Oh my Zsh on Ubuntu
Install Zsh
sudo apt update
sudo apt install zsh powerline fonts-powerline
Make default
zsh
chsh -s $(which zsh)
Install oh-my-zsh
git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
source .zshrc
Use "agnoster" theme
:~/.zshrc
ZSH_THEME="agnoster"
Plugins
zsh-syntax-highlighting
Install:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git...
Updated by Yuto at 2021-06-19 20:01
【Ruby on Rails】Hướng dẫn làm chức năng sort với jquery-ui sortable
Cài đặt jQuery và jQuery-ui
yarn add popper.js jquery jquery-ui
```javascript:config/webpack/environment.js
const { environment } = require('@rails/webpacker')
// Add
const webpack = require('webpack')
environment.plugins.append(
'Provide',
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
Popper: ['popper.js', 'default']
})
)
// Add
module.exports =...
Updated by Yuto at 2021-06-18 17:19
Phạm vi của biến và hằng trong Ruby
Bảng dưới đây mô tả về quy tắc đặt tên và phạm vi sử dụng của biến (variable) và hằng (constant) trong ngôn ngữ lập trình Ruby.
Trong Ruby có những loại biến số:
- Local variable
- Global variable
- Class variable
- Instance variable
Loại biến số được xác định dựa vào cách đặt tên. Tùy thuộc vào từng loại biến mà phạm vi sử dụng và kết quả trả về khi tham chiếu biến chưa được khai báo sẽ khác nhau.
Quy tắc đặt tên biến và hằng
| Loại biến và hằng | Quy tắc đặt tên | Phạm vi sử dụng | Kết...
Updated by Yuto at 2021-06-04 09:59