ここまで Rails 5.2.3 でいろいろと書いてきましたが、Rails 6.0 のほうが良いのかもしれないということで、ちょっといろいろ調べてやってみました。
MariaDB を使うぶんには、MariaDB のレポジトリから最新の MariaDB をインストールすることで、案外すんなりと Rails6.0 を使うことができました。SQLite は CentOS7 でインストールされるのがバージョン 3.7 で、Rails 6.0 で必要とされるのがバージョン 3.8 以上。だけど、すんなりとインストールできる方法が、ちょっと調べただけではでてこなかったです。
ということで、MariaDB を使って Rails 6.0 を使うまでの手順
必要なもののインストール
MariaDB のインストール
さくっとこんな感じで。
1 2 3 4 |
# curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash [info] Repository file successfully written to /etc/yum.repos.d/mariadb.repo. [info] Adding trusted package signing keys... [info] Succeessfully added trusted package signing keys. |
レポジトリ登録したので、さくっと yum でインストール
1 |
# yum -y install MariaDB-server MariaDB-client MariaDB-devel MariaDB-Shared |
最後の MariaDB-Shared も忘れずに。mysql2 の gem のコンパイルに必要です。
nodejs のインストール
Rails 6.0 では yarn を使ってモゲモゲするので、最新の nodejs と yarn をインストールします。まずは nodejs。
もし epel 等から nodejs をインストールしていた場合、先に削除してからやってください。
1 2 |
$ sudo yum install https://rpm.nodesource.com/pub_12.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm $ sudo yum -y install nodejs |
yarn のインストール
1 2 |
$ curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo $ sudo yum -y install yarn |
ここまでで下準備終わり
Rails 6.0 のインストール
bootstrap と devise が使えるような感じにしていきます。
Rails のインストール
1 2 3 4 5 6 7 |
$ mkdir rails6.0_devise_bootstrap $ cd rails6.0_devise_bootstrap $ bundle init $ vi Gemfile $ bundle install --path vendor/bundle $ bundle exec rails -v Rails 6.0.0 |
bundle init したあと、Gemfile をいじって gem ‘rails’ のコメントアウトを外してインストール実行。これを書いてる時点では、 Rails 6.0 が入りました。
アプリの作成
1 2 3 |
$ bundle exec rails new . -d mysql $ bundle exec rails webpacker:install $ bundle exec rails s |
いつものように rails new します。sqlite だとダメなので mysql を指定しています。もし、webpacker がインストールされなくてエラーになる場合には、 webpacker のインストールも実施。
いつものように http://127.0.0.1:3000 にアクセスすれば、いつもの画面がみえます。
bootstrap 化する
yarn を使って bootstrap 周りのものをインストールします。
1 |
$ yarn add bootstrap@4.3.1 jquery popper.js |
config/webpack/environment.js を編集
1 2 3 4 5 6 7 8 9 10 |
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 = environment |
app/javascript/packs/application.js を編集
以下を追記する。
1 2 |
import 'bootstrap' import '../stylesheets/application.scss' |
app/javascript/stylesheets/application.scss を編集
1 |
@import '~bootstrap/scss/bootstrap'; |
application.html.erb の javascript とか読み込んでるところを書き換え
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<!DOCTYPE html> <html> <head> <title>Rails60DeviseBootstrap</title> <%= csrf_meta_tags %> <%= csp_meta_tag %> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> <%= stylesheet_pack_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> </head> <body class="application"> <main role="main"> <div class="container"> <div class="row"> <%= yield %> </div> </main> </body> </html> |
ここまでで bootstrap は使えるようになりました。
このあと、Devise とか Carrierwave も使ってみましたが、Rails 6.0 だからといって特に変更するところはありませんでした。
webpacker と、自分が手で入れたい Javascript の使い分けがよーわからん。
webpacker から逃げたいときは、以下を参照すれば良いらしい。