从事前准备开始进行Rails 6的设置(使用MariaDB版本)
事前准备
安装可与MySQL互换的MariaDB。
安装
$ brew install mariadb
$ brew services start mariadb
故障排除
如果MariaDB无法启动,请按以下方式操作。
$ sudo mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
删除所有与MariaDB相关的数据,并重新安装。
(删除所有与 MariaDB 相关的数据,然后重新安装。)
$ brew services stop mariadb
$ brew uninstall mariadb
$ sudo rm -rf /usr/local/mysql
$ sudo rm -rf /Library/StartupItems/MYSQL
$ sudo rm -rf /Library/PreferencePanes/MySQL.prefPane
$ sudo rm -rf /Library/Receipts/mysql-.pkg
$ sudo rm -rf /usr/local/Cellar/mysql*
$ sudo rm -rf /usr/local/bin/mysql*
$ sudo rm -rf /usr/local/var/mysql*
$ sudo rm -rf /usr/local/etc/my.cnf
$ sudo rm -rf /usr/local/share/mysql*
$ sudo rm -rf /usr/local/opt/mysql*
$ brew install mariadb
$ brew services start mariadb
创建用户和分配权限
由于是为开发目的,因此给予完全权限。
-
- ユーザー名: myuser
パスワード: pass
$ sudo mysql -u root
MariaDB [(none)]> use mysql;
MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO myuser@localhost IDENTIFIED BY 'pass' WITH GRANT OPTION;
MariaDB [mysql]> flush privileges;
MariaDB [mysql]> select Host,User from user;
MariaDB [mysql]> quit
安装1.2版本的Yarn。
在使用 Rails 中的 webpacker 时,需要安装 yarn。
如果不了解 node 和 yarn 之间的关系,可以在网上进行搜索。
为了能够管理 Node 的版本,我们还需要安装 nodenv。
$ brew install nodenv
$ echo 'eval "$(nodenv init -)"' >> ~/.zprofile
$ exec $SHELL -l
$ nodenv install --list
$ nodenv install 12.10.0
$ nodenv global 12.10.0
$ npm install -g yarn
2. 在不影响全球的情况下安装 Rails,保持原有的 Ruby。
在执行”gem install rails”后,rails将被安装在”~/.rbenv/versions/2.5.1/lib/ruby/gems/2.6.4/gems”目录下。由于它只在执行”rails new”时才需要使用,将其全局安装就显得多余。因此,我们将采用不安装的方法进行操作。
安装 rbenv
$ brew install rbenv
$ echo 'eval "$(rbenv init -)"' >> ~/.zprofile
$ exec $SHELL -l
使用 rbenv 安装 Ruby
$ rbenv install 2.6.4
$ rbenv global 2.6.4
安装Bundler
$ gem install bundler
创建项目目录
$ mkdir report_app
$ cd report_app
将.ruby-version文件放置
在项目目录中移动时,通过 rbenv 的功能设置文件自动切换 Ruby 版本。
2.6.4
创建 Gemfile
$ bundle init
编辑 Gemfile 文件并将 rails 的注释去掉
# gem "rails" ← 削除
gem "rails", "6.0.0" ← 追加
宝石安装
$ bundle install --path vendor/bundle
创建一个Rails项目
$ bundle exec rails new . -d mysql --skip-sprockets
※ 使用 –skip-sprockets 选项不使用 Sprockets,而是使用 Webpacker 进行处理。
执行后,会出现是否允许覆盖 Gemfile 的提示,选择是(Yes)。
如果在执行bundle install时出现gem mysql2的错误提示,请执行以下操作:
-
- 安装并设置openssl的路径
-
- $ brew install openssl
-
- $ which openssl
-
- /usr/bin/openssl ← 路径未设置,进行设置
-
- $ echo ‘export PATH=/usr/local/opt/openssl/bin:$PATH’ >> ~/.zprofile
-
- $ exec $SHELL -l
-
- $ which openssl
-
- /usr/local/opt/openssl/bin/openssl
向bundle配置中添加设置
$ bundle config –local build.mysql2 –with-opt-dir=”$(brew –prefix openssl)”
再次进行bundle安装
$ bundle
```
3. 安装Webpacker。
$ bin/rails webpacker:install
4. 数据库配置的文件 database.yml
请根据以下方式编辑 config/database.yml 文件。
username: myuser
password: pass
5. Rails 启动
$ bin/rails db:create
$ bin/rails s
6. 启动确认
在浏览器地址栏输入“localhost:3000”并按下回车
其他设定
Webpacker的配置
-
- 删除 app/assets
将 layout/application.html.erb 中的 stylesheet_link_tag 替换为 stylesheet_pack_tag
为了减少屏幕闪烁,将 config/webpacker.yml 中的 extract_css 设置为 true
由于使用了 Webpacker,可以删除 Sprockets 的目录 app/assets
禁用 Turbolinks
为了与其他JS库不兼容,禁用turbolinks。
-
- 刪除 Gemfile 中的 tarbolinks
刪除 app/javascript/packs/application.js 中的 require(“turbolinks”).start()
刪除 app/views/layouts/application.html.haml 中的 data-turbolinks-track
刪除 package.json 中的 turbolinks
瘦身引入
-
- 在Gemfile中添加`gem ‘slim-rails’`
-
- 将现有的erb文件转换为slim
- 来源:https://qiita.com/mocchicc/items/abab4cdfac7b542742a6
RSpec的使用
-
- Gemfile中添加以下内容:
group :development do
gem ‘factory_bot_rails’
end
group :test do
gem ‘rspec-rails’, ‘~> 4.0.0.beta2’
gem ‘rails-controller-testing’
end
生成rspec所需的文件:
$ bin/rails generate rspec:install
生成bin/rspec命令:
$ bundle binstubs rspec-core
修改rspec的配置文件:
在rails_helper.rb中添加以下配置:
# 让 FactoryBot.create 可以用 create 来调用
config.include FactoryBot::Syntax::Methods
# 设置 rspec3.3 的 aggregate_failures 选项为默认选项
config.define_derived_metadata do |meta|
meta[:aggregate_failures] = true unless meta.key?(:aggregate_failures)
end
# 只运行带有 focus 标记的测试
config.filter_run_when_matching :focus
由于使用了Rspec,删除Minitest的目录test。
使Rails控制台更加方便
Rails Console や デバッグを便利にするための gem を導入する
Gemfile
group :development, :test do
gem ‘awesome_print’
gem ‘pry-byebug’
gem ‘pry-rails’
end
.pryrc ファイルを作成する
Railsプロジェクトのrootディレクトリに.pryrcファイルを配置しておけばデバッグ中に利用できるエイリアスが貼れる
.pryrc
if defined?(PryByebug)
Pry.commands.alias_command ‘c’, ‘continue’
Pry.commands.alias_command ‘s’, ‘step’
Pry.commands.alias_command ‘n’, ‘next’
Pry.commands.alias_command ‘f’, ‘finish’
end
基本设置已经完成。现在让我们开始应用程序的实施吧。