ソーシャルボタンをつけました
果たして押される日が来るのだろうか。アプリとかwebの媒体だと大体ついてますよね。
こういうのはDBと関係ないので気軽につけれますね、自動再生されたリンク張るだけだし。 ただ付けたのはいいのですが、たまに読み込まれなかったりするので少しおかしいのかも。 ちゃんとしたアプリとかだと読み込まれないのは見た事ない?気がするので、キャッシュさせたりしているのかな。
本当は、slim(RailsのHTMLの方言みたいな奴)での実装方法を紹介しているページを見つけたので、slimで実装したかったのですが、簡単なHTMLはこのアプリで変換も出来るし、slim自体にも変換機能があるので変換出来たのですが、少し複雑なHTMLだとエラーが出てしまって解決出来なかったので今回は諦めました。 もしかしたら、インストール失敗しているだけかもしれませんが。 Railsのviewだと「html.elb」、「html.haml」、「slim」があるらしいのですが(もしかしたら他にもあるかも)slimは読込速度が早いらしいので、書けるようにしときたいです。タグの記述も減りますし。
以下の記事を参考にさせて頂きました。
結局slimで書いていないので、読んだだけですが・・・。
一度に全ファイルを変換する事も出来るようですが、様子を見ながら少しずつ変換して構文も覚えていきたいと思います。
星で評価を実装
実装方法をどうしたかという結論から先に言うと、以下の記事を参考にパクらさせて頂きました。コピペグラマから卒業できない・・・。
最初は、星をクリックして評価する部分をどう実装しようかと思って、最初CSSでクリックした時とクリックした後を画像で使い分ければいいと思っていたのですが、そうした場合、例えば星4個目とかをクリックした場合、間の1~3をクリックした状態にするの無理やん・・・と途中で気づきました。(CSSの知識が足りないだけでしたが)
次にjavascriptで実装する事を思いつきましたが、こちらに関してはRateItというプラグインが既にあるようでした。
こちらを使っても良かったのですが、もう少しググっていると冒頭の実装方法に辿りつきました。
実装方法が凄くシンプルでCSSだけで動きを制御しています、凄い。
こんな実装方法思いつかないよ・・・。
hover hover ~ checked ~
の使い方が自分じゃ思いつかない、勿論他にも知らないプロパティはありましたが、特にこの3つの使い方が凄い。
実装出来たのは嬉しいですが、自分の知識の無さを思い知らされて少し悲しくなりました。
アプリに設定ミスがありました・・・
production環境の設定ミス
アプリに登録出来ない状況が続いていました。
herokuにテストユーザーを作ろうとしたら登録出来ない状況に気づきました。先ほどテストして、今は登録出来る状況になっていると思います。
config.action_mailer.perform_caching = false config.action_mailer.raise_delivery_errors = true config.action_mailer.delivery_method = :smtp host = 'otenkihyouka.herokuapp.com' #この部分がherokuの自動で割り当てられるアプリ名になっていたのでsendgridと連携出来ていませんでした。 config.action_mailer.default_url_options = { host: host } ActionMailer::Base.smtp_settings = { :address => 'smtp.sendgrid.net', :port => '587', :authentication => :plain, :user_name => ENV['SENDGRID_USERNAME'], :password => ENV['SENDGRID_PASSWORD'], :domain => 'heroku.com', :enable_starttls_auto => true }
もし登録してみようと思っていた方が居たらすいません。現在は登録出来ると思います。
ただアプリの挙動を見ると自分がadminでログインしていると登録しようと出来ない?不具合があるみたいなので原因が分かれば修正したいです。
アプリ自体もデリートしたユーザーのメールアドレスが残っていると案内が出たので、DBを見ると消えているので謎だらけです。
う~ん無料レンタルサーバを借りた方がいいのかな、無料レンタルサーバってVPSみたいにlinuxイジれるのかな?
とりあえず評判の良いxdomainというサーバをそのうち借りてみたいと思います。
rubyはまだまだ学習不足なのでしばらくherokuを使うと思いますが。
クソアプリを作った
とりあえず作った
作ったと言ってもほとんどRuby on Rails チュートリアルで作れるアプリのサンプルに少し手を加えただけなので、今後も手を加えていきたい。 railstutorial.jp
とりあえず「天気を評価する」機能は実装したので公開できるようになりました。
今回拘った点
無料で機能を実装する点に拘りました。
何でこんな事を言うかと言うと、Railsチュートリアルをやっていると第13章で本番環境ではAWSのS3を使って画像を保存しましょう(herokuにはストレージが無い)と出てくるのでこちとら絶賛無職中で敷居が高い。
というよりも、AWSのS3を個人で使うのは嫌だと思うのですが・・・。
そんな訳でなんか代用出来るサービスが無いかと探していたら、cloudinaryというサービスがある事が分かったのでそちらで代用しました。(でも無料枠だと500Mしかない)
その後もherokuのaddonを見ていたら、Storjもあって、しかも無料枠で5GBも使えるみたいなのでこちらに移りたいです。
そもそもチュートリアルの機能をまんま残してあるので、画像投稿機能がいらない様な気もしますが。
追加したい機能
・都道府県選択を日本地図みたいな画像をタッチして選択出来るようにしたい
・Twitterとかでログイン出来るようにしたい
・レスポンシブデザインにしたい
・モロモロ日本語化出来る所はしたい
-出来たらいいな機能
・プロフィール画像をGravatarsからアプリ自体で画像を変更出来るようにしたい
作ってみた感想
Railsチュートリアルをやるのは2回目で1回目の時は色々あって2日でやって、今回は2週間くらいかけてやったので前よりかは理解度が高い気がします。
課題としてはテストが自力で書けない、特にユーザー認証とかユーザーフォローの機能の部分とか見本のコードを見てもおぉん?という感じでした(:´・ω・`)
テストを自力で書けるようになりたいです。
後はrubyの言語自体の理解が低いので、これは本やコードで学習するしか無さそうです。
rubyだと条件式の別条件を「elsif」と書きますが、「elseif」、「else if」で通らなくてやきもきしました。
cloud9の環境を手元の環境に移したい
躓きまくり
今回はWindows10を使ってVirtualBoxとvagrantでubuntuでやってみようとしています。
えー今時vagrantなの~?臭そう~☆( ´^ω゚`)
という声も聞こえて来そうですが、Dockerはまた別の機会に勉強したいと思います。
構築に当たってcentosでは何度も構築した経験があるので、そこまで躓かないと思ったのですが、vagrantの設定ファイルにいつもルートで入れる様に
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| # box config.vm.box = "bento/ubuntu-16.04" # private network config.vm.network "private_network", ip: "192.168.1.50" config.vm.network :"forwarded_port", guest: 3000, host: 3000 #サーバー側でファイアーウォール解放したらいらない? # 共有フォルダ config.vm.synced_folder "./data", "/vagrant/data" # デフォルトの機能の追加設定 # rootで入る用 # config.ssh.username = 'root' # config.ssh.password = 'vagrant' # config.ssh.insert_key = 'true' config.vm.provider "virtualbox" do |vb| # 起動時にバーチャルボックスも表示 # vb.gui = true # 使用メモリーの指定 vb.memory = "2048" vb.customize ["modifyvm", :id, "--cableconnected1", "on"] # plugin Setting end end
こんな感じでroot用のパスを設定していたのですが、vagrant upすると127,0,0,0のパスワードを入力してねと何度も言われて結局外しました。一体何を入力すれば良かったんだ。
それとcloud9ではデフォのDBがsqlite3なのでherokuにアップする時はpostgresなのでそこは揃えようとカチャカチャしました。
エラーと格闘していると何とかapacheなどは通さずには表示出来るようになりました。
ただ疑問があって、最終的にherokuにアップロードするのですが、gemのインストールした配置箇所がローカル環境のRailsと関係ない場所に置かれているので、これで大丈夫なのかなと思っています。
heroku側がGemfile.lockを見て任意でインストールしてくれるなら問題ないのですが、ローカルの環境をコピーしているだけだと確実に動かないので、少し変更を加えたらテストしてみます。
ググって見ると、多分Gemfile.lockを見て任意でインストールしてくれる様なので大丈夫そうだとは思っているのですが。
よくよく考えてみたら、cloud9とちょっと構成が変わったのでブランチ切っておけばよかった・・・。