ラーメンを食べて生活したい

ラーメン好きの技術ブログ

お手軽Ruby on Rails開発環境を作ってみた

お久しぶりです。 最近、卒論に追われたり内定先の懇親会があったりと充実しているのかしていないのわからないです(笑)

今回はDockerでRuby on Railsの環境を作ってみました。

github.com

きっかけ

内定先の企業がDockerを使った開発を始めようとしているので、自分もすべての環境をDockerにしてみようかと思ったから。 しかし、毎回揃えていると結構時間がかかったり、書き方を忘れたりといろいろめんどくさいので一つにまとめてみました。

実際の使い心地

環境構築は結構容易でしたが、いろんなプロジェクトに対応させると結構大変かもしれません。 ファイル名の変更だったり、パスワードの変更だったりといろいろあります。

今後のやりたいこと

標準入力でファイル名を操作できるようにしたいと思ってます。 また、Ruby以外のものを作ってみたいですね。

また、卒論がんばろう・・・

Ubuntu17.10+Vagrant+Rubyで環境開発(3)

またまた、前回の続きです。

今回はRubyRuby on Railsの環境を作っていきましょう!!


開発環境

まず既存のパッケージとRubyのインストールに必要なパッケージをインストールしましょう!!!

> sudo apt -y update

> sudo apt -y install git curl g++ make zlib1g-dev libssl-dev libreadline-dev libyaml-dev libxml2-dev libxslt-dev sqlite3 libsqlite3-dev

どこかで、apt-getはもう使わないってみたような・・・

次に、rbenvをインストールしましょう。
ちなみに、rbenvとはローカルディレクトリ毎に Ruby のバージョンを指定できるものです。

> git clone git://github.com/sstephenson/rbenv.git .rbenv

> echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc

> echo 'eval "$(rbenv init -)"' >> ~/.bashrc

> exec $SHELL

> mkdir -p ~/.rbenv/plugins

> cd ~/.rbenv/plugins

> git clone git://github.com/sstephenson/ruby-build.git

ここまでで、rbenvがインストールされています。

いよいよRubyをインストールしましょう! ただ、Rubyにもいろいろバージョンがあるので自分で色々探してみましょう。 rbenv install -listと実行すると、jrubyやmrubyがでてきますが 上の方に行くと、rubyがでてきます。

最新安定バージョンを入れた方がいいです。 今回は、2.5.1を入れます。

> rbenv install 2.5.1  # -vをつけるといろいろみれます

> rbenv global 2.5.1

> ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

rbenv installのインストールには時間がかかるので結構待ちます。 この後は、RubyGemを使ってRails等をインストールしてみましょう!!!


参考記事

www.oiax.jp

Ubuntu17.10+Vagrant+Rubyで環境開発(2)

前回の続きです!!!
まだご覧になっていない人は、こちらのリンクからみてください!!

komisan19.hatenablog.jp


開発環境

前回は、vagrant sshで環境に入るところからの続きです。

とりあえず、dateコマンドでいろいろ確認してみましょう。

おそらく、英語だったり時刻が日本時間になっていなかったりするでしょう。
そこで日本語設定等を最初にしていきましょう。


まずは、日本語設定に必要なパッケージをインストールしてみましょう。

> sudo apt-get -y install language-pack-ja-base language-pack-ja ibus-mozc

次に、日本語化していきましょう。

> sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"

> source /etc/default/locale

次に時刻設定をしていきましょう。

> timedatectl set-timezone Asia/Tokyo

ここまでで日本語か設定ができていると思います。 区切りがいいので今回はここまでとします。

次回はRubyを導入していきましょう。 ではでは( ^ω^ )

Ubuntu17.10+Vagrant+Rubyで環境開発(1)

環境をつくるときに結構忘れているところがあるので、
しっかりまとめてみようと思います。

とりあえず入れてみる環境 

  • Ubuntu17.10
  • Vagrant2.1.0
  • Ruby2.5.1
  • Ruby on Rails5.2.0

環境開発  

Vagrant+virtualBoxのやり方については、その他のサイトでご確認下さい。  

  1. とりあえず、まずはmkdir ubuntuを使ってディレクトリを作ります。

  2. 次に、cd ubuntuを実行してvagrant initVagrantfileを作ります。

  3. Vagrantfileonfig.vm.box = "base"といった行があると思います。
    baseの部分を"ubuntu/artful64"に変更してください!!!
    詳しいファイル内容は、gistにまとめているのでご確認ください。

gist.github.com

  1. ubuntuディレクトリ内でvagrant upを実行します。
    ちょっと長いです( ・∇・)

  2. 実行が終わったら、vagrant sshでアクセスします。

ちょっと長いので、二つに分割しようと思いますw
でわでは

VagrantのBox削除について

Vagrantって?

一言で言うと、開発環境の構築と共有を簡単に行うためのツールです。

もっと簡単に言うと、CentOSubuntuの仮想環境を簡単に作れてしまうやつです。

Boxの削除って?

vagrant box updateを繰り返していると、不要になるファイルが増えていきます。

>vagrant box list
ubuntu/xenial64 (virtualbox, 20180329.0.0)
ubuntu/xenial64 (virtualbox, 20180406.0.0)
ubuntu/xenial64 (virtualbox, 20180410.0.0)
ubuntu/xenial64 (virtualbox, 20180413.0.0)
ubuntu/xenial64 (virtualbox, 20180420.0.0)
ubuntu/xenial64 (virtualbox, 20180424.0.0)
ubuntu/xenial64 (virtualbox, 20180427.0.0)

こんなとき削除したくなります。

そこで、--box-versionをつけて消すようにしてみましょう。

vagrant box remove ubuntu/xenial64 --box-version 20180329.0.0

と打てば消えます。

Twitterに毎日の天気を投稿するBOTを作ってみた

なぜ?

テレビやアプリで天気をみなくなったから。 ツイッターだと毎日廃人のように使うから。


注意

適当に作ったので正直参考になりません。

環境


完成品

github.com

問題点

今は千葉県だけ参照できている状態なので他の県も参照できるようにしたい。

Devise+Twitterのログイン

環境


やり方

  • 以下のGemを入れる
 gem 'devise'
 gem 'omniauth-twitter'
 gem 'omniauth'
  • 次に、以下のコマンドを実行
> rails g devise:install

> rails g devise User
 
  • db/migrate/***_devise_create_users.rbの以下を編集し、
    rails db:migrateを実行
      ## Database authenticatable
      t.string :provider, null: false
      t.string :uid, null: false
      t.string :image, null: false
      t.string :name, null: false
    
      ## Rememberable
      t.datetime :remember_created_at
      t.string :remember_token
      
      # 適度にindexを追加
      add_index :users, [:provider, :uid, :name], unique: true
  • app/models/user.rbを下記のように編集
devise :rememberable, :trackable, :omniauthable
  • app/controllers/users/omniauth_callbacks_controller.rbを作成
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
  include Devise::Controllers::Rememberable

  def twitter
    auth = request.env['omniauth.auth']
    
    user = User.find_or_create_by(
      provider: auth.provider,
      uid: auth.uid,
      name: auth.info.name
    )
   
    remember_me(user)
    
    sign_in_and_redirect user, event: :authentication
  end
end
  • ルーティングを編集するconfing/routes.rb
  devise_for :users, controllers: {
    omniauth_callbacks: 'users/omniauth_callbacks'
  }

  devise_scope :user do
    delete :sign_out, to: 'devise/session#destroy', as: :destroy_user_session
  end
  • APIを挿入する
config.omniauth :twitter, 'API', 'secret'
  • Viewsにこれを挿入する
<% if user_signed_in? %>
  <%= link_to 'Sign out', destroy_user_session_path, method: :delete %>
  <%= current_user.name %>
  <img src="<%= current_user.image %>" width="30px" height="30px" />
<% else %>
  <%= link_to 'Sign in', user_twitter_omniauth_authorize_path %>
<% end %>

読みづらいけどこんな感じにできました


参照元post.simplie.jp