Vagrant の synced_folder 下で node_modules の更新がつらい件
vagrant で node_modules を別にインストールするようにして、 yarn install のストレスを軽減する
# 適当なディレクトリ作ってマウントしちゃうぞ! # (これ実行した後はホスト側の node_modules は更新されない。 from, to を逆にすると意味がない) mkdir ~/vagrant_node_modules sudo mount --bind ~/vagrant_node_modules node_modules
# 解除するぞ! する必要を感じないが。(これ実行した後はホスト側の node_modules が更新される) sudo umount node_modules
Rails 5系 から 6系 に上げた時に知ったこと
ar_internal_metadata
ってやつ、migrate:reset
すると shcema の datetime
が datetime(6)
に変わりやがる。
better_errors が Vagrant で動かないときの対処
デバッグ用のgemとして以下を入れると便利です。
group :development do gem 'better_errors' gem 'binding_of_caller' end
ただ、Vagrant環境下だとデフォルトのままではブラウザに出てきてくれなかったりして 困りましたが、ググったらいろいろありました。
Rails - better_errorsがvagrantで動作しない対処 - Qiita
が、Vagrantファイル書き換えたりとかイヤなので、
ちょっと考えみたら以下の記述で動きました。
config/environments/development.rb
BetterErrors::Middleware.allow_ip! "10.0.2.2"
サーバログに出てるもんね。
Rails4で作ったやつをHerokuに上げるときにやっとくこと
Gemfile
Rubyのバージョンを固定するなら書いとく。
rails new
したあとのデフォルトだとsqlite3
がproductionでも有効になってしまうのでdevelopとtestだけに限定して、productionではpg
を使うようにする。
あとrails_12factor
もproductionで入れる。
source 'https://rubygems.org' ruby '2.2.3' gem 'rails', '4.2.3' ... ...他 group :development, :test do gem 'sqlite3' ...他 end group :production do gem 'pg' gem 'rails_12factor' end
Rubyのパス
Rubyのバージョンによってはスクリプト類が動いてくれないことがある。
bin
ディレクトリ内の各スクリプトにRubyのパスを書いたマジックコメントがあるので、バージョン番号を削る。
(-) #!/usr/bin/env ruby2.2 (+) #!/usr/bin/env ruby
おしまい
とりあえずRialsチュートリアルとかやるときには、Herokuに上げる前にやっとくと吉ですね。
VagrantのRailsをWindowsのChromeでテストする
できたこと
仮想環境下のRailsを、ホストであるWindows側のブラウザでテストできるようになった。うれしかったのでメモ。
テストでもやっぱりブラウザで動いてるとこ見たいし。
ほとんど下記ページのコピペ。
Vagrant環境下におけるブラウザテストについて(Chrome編) | hifive開発者ブログ
環境
ホスト : Windows7, Chrome
仮想マシン: Ubuntu, Ruby 2.2.3, Rails 4.2.3
rails-dev-boxのほぼデフォルト。3000番ポートはつないである。
作業手順
Rails側
以下のgemを追加する。
minitest-rails minitest-rails-capybara selenium-webdriver
test_helper.rb に下記を追加する。IPアドレスの192.168.0.XXXはホストのIPアドレス。
require "minitest/rails/capybara" Capybara.javascript_driver = :chrome Capybara.app_host = "http://localhost:3000" Capybara.server_host = "0.0.0.0" Capybara.server_port = 3000 Capybara.default_max_wait_time = 10 Capybara.run_server = true Capybara.register_driver :chrome do |app| Capybara::Selenium::Driver.new app, browser: :remote, desired_capabilities: Selenium::WebDriver::Remote::Capabilities.chrome, url: "http://192.168.56.1:4444/wd/hub" end
server_hostを指定しておけばRails側でサーバ起動しなくても大丈夫だった。
192.168.56.1はVirtualBoxのHostOnlyアダプタ
ホスト
Selenium Server をダウンロードして適当なとこに置いとく。
Java Runtime がなければ入れる。
コマンドプロンプトで以下を入力して起動する。
java -jar selenium-server-standalone-x.xx.xx.jar
あとは・・・
ふつうにfeatureテストを作る。書き方はググる。js: trueってつけとけばブラウザ動く。
テストを実行すると、たぶんWindows側のChromeが動き出してくれるはず。。
やっほい!
はてなダイアリーから、はてなブログに移転しました
なんとなくね。
ブログタイトルにも「ver.2.0」ってつけてみました。