rails
Ruby on Rails 6 エンジニア 養成読本 (Software Design plusシリーズ)作者:すがわら まさのり,前島 真一出版社/メーカー: 技術評論社発売日: 2019/10/26メディア: 単行本もう3年はRubyやRailsを使っておらず、知識がRails3で止まっています。 そもそもWeb…
Bootswatch: Free themes for Bootstrapbootswatchにはbootstrapをちょっと格好良くできるテーマ集です。 色合いの変更が主なので、使用感を変えずに使うことができます。 railsでコレを使う場合は、generatorつきの 'twitter-bootswatch-rails'という便利ge…
試験が終了したrailsアプリ(myapp)を、本番環境のpassengerで稼働させる簡単なお仕事をしていました。Installing Passenger + Apache on Ubuntu 14.04 LTS (with APT) on a Linux/Unix production server (part 2) - deployment walkthrough with Ruby, Pass…
今日は自前鯖のrails4のアプリをproduction環境で稼働させる方法の話です。実はHerokuみたいな環境の記事は書いた事があります。 shuzo-kino.hateblo.jpただ、自前鯖だとデータベース等々で手を動かさないと駄目なトコも多いです。 普段人任せか自動化スクリ…
railsstrapはtwitter-bootstrapをヨロシク使う以外にも、色々便利な拡張がついてきます。 今回はその一つ「datepicker」について扱います。 実際のところ これまで、泥臭くdate_fieldとcss芸で対処していた所を、date pickerで実装し直すケースを考えます。 …
以前の記事ではviewでevalを呼び出してやる方式を試しました。 shuzo-kino.hateblo.jp前回のような全部のせメソッドで内部的に切り替え……でもよいのですが、 今回は、class_evalとdefine_methodをつかって、用途にあったメソッドを生成する方法を考えます。 …
date_selectはRailsの初期の頃から実装されていた、formタグの一つです。 名前の通り、日時の入力に特化したタグで力技でoptionのフォーム生成をやってくれます。 実際のところ formで生成するときは、以下のようにします。 オプションの意味は公式ドキュメ…
私のようなRails若葉マークにとって、matchメソッドは救いの女神です。 雑に書いても、雑に補足してくれます。 とは言え、規模が大きくなってくるとそうも言っていられなくなります。 今回は、そんなこんがらがった糸を解す過程のメモです。 実際のところ HT…
railsstrapはtwitter-bootstrap-railsの互換gemです。 特に、font-awesomeまわりの挙動が、デフォルトで組み込まれている分、前者より安定している印象があります。 基本的挙動は同じですが、若干違うため多少の注意は必要です。 特に、DatePickerなど本家で…
過去に担当したRoRシステムの手直しをすることになりました。 スクリプトを見るのは、実に一年半ぶり。 "rails s"すら忘れているレベルで現場から離れていたので、今回の記事みたいな有りがちな事も忘れてました。 実際のところ 以下のモノを適用しているシ…
view_source_mapはViewにRenderもとのContollerファイル名を記載してくれる便利Gemです 使い方 特になんの工夫もなく、rails sしてあげれば <p>test</p> てな感じで展開されます。 ソースをみると、Railtie自体に細工をする事でこの魔法が実現されているようです……
Railsのbundle installで突っ込んだgemの配置先をみるには 「bundle show」です。 $ bundle show sass /Users/shuzo_kino/.anyenv/envs/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sass-3.4.13また、半端に入力しても $ bundle show sas 1 : sass 2 : s…
「-m」はrails newの際、gist等々に放り込んだレシピに従ってあれこれしてくれるオプションです。 こんな感じで使います。*1 $ rails project_name -m <https://gist.github.com/banker/219223/raw/>生テキストでないと読み込まないので注意してください。 できること テンプレートの記述にはUNIX系コマン</https://gist.github.com/banker/219223/raw/>…
Railsアプリはデーモンとして起動する事ができます。 やり方は簡単で $ rails s -dと、オプションを一個つけるだけ。とはいえ、これだけだとデーモンらしく動かすのは至難の技なので mirasrael/daemons-rails · GitHub や resque/resque at 1-x-stable · Git…
RailsはデフォルトでActiveRecordというORMがついてます。 ただ、軽い個人的プロジェクトで使うような場合などです。 また、Mongoidを使いたい場合はそもそも取り除く必要があったりします。今回はそういった場合の対処法です。 方法 rails new myapp --skip…
railsでspecをやる場合 $ rake specがありますが...これ、全部実行してくれるので一寸不便です。 一個だけファイルをテストしたい場合はSPEC変数に設定したげます。 $ rake spec SPEC=spec/controllers/hoges_controller_spec.rb更に、特定ファイルの特定の…
submitでモデルから挙動を判定してくれるアレですが... 3.0からの機能のようですね。 これで使われているのがclass_optionなるものに記録されたmodel名です。 実装をみたところBaseクラスに対してmethodを定義してあげているだけ...でした # File railties/l…
formタグのsubmitは対象モデルが保存済みかどうかを読み取りに行き、 自前でcreateかupdateかを判定してくれます。 確認フォームのような画面を実装する場合、この点を意識しないと勝手にupdateになって詰みます。*1この魔法を実現している部分がこちら ## l…
form_forの中でrenderを使いたい場合、localオプションで指定します。まず、大元のページで <%= form_for(@picture) do |f| %> <div class="field"> <%= render :partial => "page_1", :locals=>{:f=>f} %> </div> <% end %> こうすれば、render先のファイルでもform_forのブロック…
carrierwaveの自動生成スクリプトをみてたらこんな記述が... # Never trust parameters from the scary internet, only allow the white list through. def picture_params params.require(:picture).permit(:image) end これはstrong_parameterという奴で、…
複数人でアプリ開発をしており、 既に各々データベースの環境を構築してしまっている時にはこれが便利です。 gem 'dotenv-rails'を追加して ".env"に MYSQL_PASS="password"とやった上で development: adapter: mysql2 encoding: utf8 reconnect: false data…
evalは文字列をスクリプトとして解釈して実行するKernel所属のメソッドです。 これを活用すると、似たメソッドを延々と生成する愚を犯さずに済みます。 更に、文字列を生成して評価する形式であるため、変更に対しても柔軟です。 実際の所 helperに def choo…
<%= link_to_if(user_signed_in?, "編集", edit_hoge_path(@fund), class: 'btn') %> とやれば、deviceでサインインしている場合*1リンクを表示、 なければただの文字列を表示します。非ログイン時に何も表示したくない場合は空のブロックを渡します。 <%= l…
Objectクラスに付属しているsendメソッドは、引数に文字列かシンボルを与えてやると同名のメソッドを引っ張り出してくれる凄い子です。 %w(pop push slice).send(:to_s) #=> "[\"pop\", \"push\", \"slice\"]" 引数つきで実行する事も当然可能です。 %w(pop …
link_toとやる場合、よくある記法だと <%= link_to "新規作成", :controller => "pages", :action => "new" %> ですが、railsは賢い子なので <%= link_to "新規作成", new_page_path %> とやってあげると、pageコントローラーのnewメソッドを呼び出してくれ…
rails cを使うと、わざわざブラウザを使わなくともメソッドの挙動lを検証をする事ができます。 ただ、実行中にmodelを弄っても反映してくれません。弄った結果をすぐ反映したい場合は >> reload! とやればよいです。 これで毎度毎度rails cとやらずとも同じ…
今迄無批判に $ rake db:migrate:reset $ rake db:resetとしていました。 これでDBを弄りつつseedを配置していた訳ですが... Engineをmroongaに設定したところ、今迄の手法が通じませんでした。 というのも、db:resetは 削除=>作成=>schema.rbから復旧と…
たとえば、検索エンジンにmroongaを追加したい場合は 既存のdb/migrationの当該ファイルにoptions: "ENGINE = mroonga"を追加します class CreateProfessors < ActiveRecord::Migration def change create_table :professors ,options: "ENGINE = mroonga" d…
Turnipのstep定義でidを指定したい場合は、 findメソッドに:cssオプションを持たせて使います。 ## hoge.step step ":css_tag に :content が表示" do |css_tag, content| expect(find(:css, css_tag).text).to eq(content) end ## piyo.feature When "span#…
TurnipでもFactory Girlが使えます。 TurnipはCapybaraベースなので、当たり前とえば当たり前ですが #Gemfile group :test do gem 'factory_girl_rails' end ## spec/devise_steps.rb step 'ログイン' do FactoryGirl.create(:user) Capybara.app_host = "ht…