Help us understand the problem. What is going on with this article?

@masuidrive のRailsプロジェクトの始め方

More than 3 years have passed since last update.

rbenv, nvm, MySQL, redisが入ったUbuntu Vagrantfile

すぐに開発に使えるVagrantfile。依存物を少なくするためにShellでプロビジョニング。

vagrant up時に各種パッケージのインストールとRubyのコンパイルが走るので、30分ぐらいかかります。初回でOSイメージが無い場合はもっとかかるかも。

Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.network :forwarded_port, guest: 3000, host: 3000
  config.vm.synced_folder ".", "/vagrant"

  GUEST_RUBY_VERSION = '2.2.4'

  GUEST_NVM_VERSION = '0.30.1'
  GUEST_NODE_VERSION = 'stable'

  # 必要なパッケージをインストール
  config.vm.provision "shell", privileged: true, inline: <<-__SCRIPT__
    export DEBIAN_FRONTEND=noninteractive
    apt-get update -y

    # database
    apt-get install -y debconf-utils
    debconf-set-selections <<< "mysql-server-5.5 mysql-server/root_password password \"\""
    debconf-set-selections <<< "mysql-server-5.5 mysql-server/root_password_again password  \"\""
    apt-get install -y mysql-server-5.5 mysql-client-5.5 libmysqlclient-dev
    apt-get install -y redis-server

    # develop env
    apt-get install -y git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev

    # for testing
    apt-get install -y phantomjs qt5-default libqt5webkit5-dev
  __SCRIPT__

  # RubyとNodeをコンパイル
  config.vm.provision "shell", privileged: false, inline: <<-__SCRIPT__
    # install rbenv
    git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
    git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
    git clone git://github.com/sstephenson/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehash
    echo $'export PATH="\$HOME/.rbenv/bin:\$HOME/.rbenv/plugins/ruby-build/bin:\$PATH"' >> ~/.bashrc
    echo $'eval "\$(rbenv init -)"' >> ~/.bashrc
    echo $'. ~/.nvm/nvm.sh' >> ~/.bashrc
    echo $'gem: --no-ri --no-rdoc' > ~/.gemrc

    # install nvm
    curl -s https://raw.githubusercontent.com/creationix/nvm/v#{GUEST_NVM_VERSION}/install.sh | bash

    export PATH="$HOME/.rbenv/bin:$HOME/.rbenv/plugins/ruby-build/bin:$PATH"
    eval "$(rbenv init -)"
    . ~/.nvm/nvm.sh

    #{defined?(GUEST_RUBY_VERSION) ? "rbenv install %s; rbenv global %s; gem install bundler" % [GUEST_RUBY_VERSION, GUEST_RUBY_VERSION] : ''}
    #{defined?(GUEST_NODE_VERSION) ? "nvm install %s; nvm alias default %s" % [GUEST_NODE_VERSION, GUEST_NODE_VERSION] : ''}
  __SCRIPT__

  config.vm.provider "virtualbox" do |vb|
    vb.memory = ENV["VM_MEMORY"] || "1024"
    vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 10000]
  end
end

=begin
シンプルなRails開発環境

- Ruby
- Node (オプション)
- MySQL
- Redis
- PhantomJS
- Webkit5 (for Capybara)

参照:
https://gorails.com/setup/ubuntu/14.10
=end

初回起動

provisioningの時にNodeのバージョンを指定した場合、コンパイルでメモリを食うので、VM_MEMORYを指定します。

VM_MEMORY=2048 vagrant up

新規プロジェクトの作り方

cd /vagrant
gem install rails
rails new . --database=mysql --skip-turbolinks
rake db:create

vi Gemfile
:development, :testに下記の3行を追加
gem 'rspec-rails', '~> 3.0' 
gem 'factory_girl_rails', '~> 4'
gem 'guard'


bundle install
guard init
rails generate rspec:install

.gitignore

node周りのファイルも追加

# Ignore bundler config.
/.bundle

# Ignore bundler gems.
vendor/bundle

# Ignore the default SQLite database.
/db/*.sqlite3
/db/*.sqlite3-journal

# Ignore all logfiles and tempfiles.
/log/*
!/log/.keep
/tmp

# Ignore node files
/node_modules
/bower_components

# Ignore other unneeded files.
/.vagrant
doc/
*.swp
*~
.project
.DS_Store

テンプレートの編集

app/views/layouts/application.html.erbのbodyにクラスを追加

app/views/layouts/application.html.erb
<body class="<%= 'controller-%s controller-%s-%s action-%s' % [controller.controller_name, controller.controller_name, controller.action_name, controller.action_name] %>">

Vagrant上での開発の注意点

  • Guardで自動テストが走らないときは、guard -pとポーリングオプションを付ける
  • サーバを起動するときは、rails s -b 0.0.0.0
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away