3,728
回編集
差分
Tabetai
,→DeviseとOmniauthでGoogle、Twitter、Facebook認証
[[rails前バージョン確認|バージョン確認]]
[https://help.onamae.com/contact/ お名前.com問い合わせ]
== create application ==
production:
<<: *default
database: koresore_productiontabetai_production
username: jq
password: <%= ENV["KORESORE_DATABASE_PASSWORDTABETAI_DATABASE_PASSWORD"] %></nowiki>
<nowiki># /config/environments/production.rb
config.action_mailer.delivery_method = :smtp
#host = 'localhost'
host = 'http://koresoreonk.pokpok.jp'
config.action_mailer.default_url_options = { host: host }</nowiki>
データベース作成
$ createdb tabetai_production
$ rails db:migrate RAILS_ENV=production
== production ==
% $ DISABLE_DATABASE_ENVIRONMENT_CHECK=1 rails db:drop RAILS_ENV=production
<nowiki>本番環境でbin/devを実行する。
RAILS_ENV環境変数を設定して本番環境を指定。
export RAILS_ENV=production
bundleコマンドを使用してGemの依存関係をインストール。
bundle install
プリコンパイルされたアセットを生成。
bundle exec rails assets:precompile
サーバーを起動。
bundle exec rails server</nowiki>
== テスト用のデータで開発用のデータをつくる設定 ==
puts "\n== Seeding the database with fixtures =="
system("bin/rails db:fixtures:load")</nowiki>
== db:rollback ==
% rails db:migrate:status
% rails db:rollback
% rails db:rollback STEP=n
% rails db:migrate:down VERSION=**************
== gemのアンインストール方法 ==
<nowiki>$ bundle exec gem uninstall <gem名>
Gemfileから該当のgemの行を削除
$ bundle install</nowiki>
== user ==
% bundle exec rails g model User email:string
t.string :email, null: false, index: { unique: true }
% bundle exec rails db:migrate
<nowiki># app/models/user.rb
validates :email, presence: true, uniqueness: true</nowiki>
== home ==
ホームを作る
% rails generate controller Pages home
homeコントローラーはパブリックなので、認証をはずす
<nowiki># app/controllers/pages_controller.rb
skip_before_action :authenticate_user!
</nowiki>
ルートパス
<nowiki># config/routes.rb
root to: "pages#home"</nowiki>
== user devise ==
% bin/rails generate devise:install
Viewを作成
$ rails generate devise:views users
view更新
<nowiki># config/initializers/devise.rb
config.scoped_views = true</nowiki>
ログインしないとアクセスできないようにする
end</nowiki>
== home DeviseとOmniauthでGoogle、Twitter、Facebook認証 ==ホームを作る % gem 'dotenv-rails generate controller Pages home' $ bundle install $ touch .env <nowiki>HOST='example.jp'TWITTER_API_KEY=TWITTER_API_SECRET=GOOGLE_CLIENT_ID=GOOGLE_CLIENT_SECRET=FACEBOOK_KEY=FACEBOOK_SECRET=</nowiki> <nowiki>gem 'omniauth-facebook'gem 'omniauth-twitter'gem 'omniauth-google-oauth2'</nowiki> [[oauth|bundle install後のメッセージ]] $ rails g migration AddOmniauthToUsers provider:string uid:string <nowiki># config/initializers/devise.rb config.omniauth :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'], scope: 'email', info_fields: 'email', callback_url: "#{ENV['HOST']}/users/auth/facebook/callback" config.omniauth :twitter, ENV['TWITTER_API_KEY'], ENV['TWITTER_API_SECRET'], scope: 'email', oauth_callback: "#{ENV['HOST']}/users/auth/twitter/callback"