LoginSignup
2
2

More than 3 years have passed since last update.

vagrant環境でNuxt.jsプロジェクトとRailsAPIによるBFF環境構築

Posted at

開発環境

フロントエンド

  • nuxt.js @ v2.13.3
  • vue.js @ v2.6.11
  • node.js @ v12.18.2

バックエンド

  • Ruby @ v2.5.7-p206
  • Ruby on Rails @ v5.2.4.3

仮想環境

  • vagrant
  • VirtualBox6.0 @ v6.0.14 r133895 (Qt5.6.3)

その他

  • sublimetext

事前にnode.jsなどは安定版をインストールしておきましょう
(当環境ではnode.jsをホストOSに直接インストールしているので間々違いがあるやもしれません。ご了承ください)

構築

予め、お使いのテキストビュワーにrubyやvueの構文をハイライトしてくれるパッケージのインストールをおすすめします。

vagrant file

  • 開発環境では3000ポートと5000ポートに分けてそれぞれをrailsサーバー、nuxtサーバーで割り当てます。そのためvagrantfileに一文追加しておきましょう。
vagrantfile
Vagrant.configure("2") do |config|
  
  config.vm.network "forwarded_port", guest: 5000, host: 5000
  

プロジェクト作成(ローカル環境)

  • お好きな名前でディレクトリを作成してください。ここではtestとします。
  • testディレクトリまできたらrailsとnuxtのプロジェクトを作成しましょう。ここではそれぞれbackend、frontendという名前で作成します。
$ cd test
$ rails new backend —api
$ npx create-nuxt-app frontend //このあと下記の質問に答えます

? Project name: frontend  // 好きにしたらok
? Programming language: JavaScript
? Package manager: Npm
? UI framework: None
? Nuxt.js modules: Axios
? Linting tools: (Press <space> to select, <a> to toggle all, <i> to invert selection)  // JSの静的検証ツール、お好みでどうぞ
? Testing framework: None
? Rendering mode: Single Page App //SPAでの作成の方はこちら、あとでnuxt.config.jsファイルから変更可能
? Deployment target: Server (Node.js hosting)
? Development tools: (Press <space> to select, <a> to toggle all, <i> to invert selection)

質問に答えた後、しばらく待ってnuxtのマークが出れば成功です。

$ cd frontend
$ rm -rf .git //railsと共にgitに上げたいので、こちらは削除しておきましょう。

事前準備

nuxtプロジェクトのpackage.jsonを書き換えて5000ポートを使うように指定しましょう。

test/frontend/Package.json
{
  
  "scripts": {”dev”→”dev": "HOST=0.0.0.0 PORT=5000 nuxt"
  …
  }
}

テスト(vagrant環境)

vagrantを立ち上げてそれぞれのサーバーをテスト環境で立ち上げてみましょう。

test/frontend
npm run dev
test/backend
Rails s -b 0.0.0.0 

localhost:3000とlocalhost:5000をブラウザで開けば起動確認が取れると思います。

api通信ができるようにしよう(ローカル環境)

ターミナルから下記のモジュールをインストールしよう。

test/frontend
$ npm install @nuxtjs/axios  //api通信をするためのモジュール
$ npm install @nuxtjs/proxy  //開発環境下でのCORSエラー回避

インストールしたモジュールを有効にしよう。

test/frontend/nuxt.config.js
const config = {  // export defaultから変更
  
  modules: [
    '@nuxtjs/axios',
    '@nuxtjs/proxy',
  ],
  
axios: {
    proxy: true
  },  // 追記 (本番環境だと不要と思われる)
 
}

if (process.env.NODE_EV === 'development') {
  config.proxy = { '/api/: 'http://localhost:3000' }  //自分の場合railsのルーティングをnamespace apiとしているため自分の環境によって'/api/'は書き換え
}   // 追記 (開発環境の場合localhost:3000からjson取得)

export default config  // 追記

とりあえずここまでで下地はできたかと思います。
ここまで初学者の備忘録にお付き合いいただきありがとうございます。
次回はvuetyfyの導入の話をしようと思います。
そのままvuetifyを使った簡易ポートフォリオの作成までできればと考えております。

参考文献

参考にさせて頂いた皆様にもこの場をお借りして感謝いたします。
めちゃくちゃ助かってます!!!ありがとうございます!!!

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2