2014/10/15

RoR開発環境で、新規プロジェクトの作成

今更ながら、下記RoR開発環境で、新規プロジェクトの作成手順をメモ。

■環境

・Ruby 2.0.0p576 (2014-09-19) [x64-mingw32]
・Rails 4.1.6
・OS windows8.1(64bit)

■プロジェクト「tweet」を作成します。
1.コマンドライン起動

   ctl + r  => cmd 

2.プロジェクトを作成するディレクトリへ移動
   cd ../../

3.プロジェクト生成
   rails new tweet

    ※この時点で、色々ファイルが生成される。

4.GEMファイル修正( gemfile edit for 64bit ) 
  この作業は64bit OS対象の作業です。
  GEMファイルの下記の箇所を下記の様に修正します。

    [修正前] gem 'tzinfo-data', platforms: [:mingw, :mswin]
    [修正後] gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw]

5.コマンドラインにて下記コマンドを実行(Gem更新)
   bundle update 


6.コマンドラインにて下記コマンドを実行(サーバー起動)

   rails s

7.ブラウザで表示確認
   http://localhost:3000/


8.コマンドラインにて下記コマンドを実行(コントローラー作成)

   rails g controller tweets index show


    --------------------------------------------------------------
    ★「scaffold」を使用する例
        rails g scaffold tweet name:string price:integer description:text

            「scaffold」を使用した場合、以下の作業は不要です。

      ブラウザで、表示確認してみましょ。

      http://localhost:3000/tweets
    --------------------------------------------------------------


   ※この時点で、下記が作成される。
・コントローラー
/app/controllers/tweets_controller.rb
※上記ファイルが自動的に記述される。

class TweetsController < ApplicationController

#ファイル名「tweets」、クラス名「Tweets」になっている点に注意
#また、複数形になっている点に注意

・ビュー
/app/views/tweets/index.html.erb
/app/views/tweets/show.html.erb

※上記2ファイルが自動的に記述される。

・ルーティングファイル
/config/routes.rb
 get 'tweets/index'
 get 'tweets/show'

※上記が自動的に記述される。

#複数形になっている点に注意


9.ルーティングの記述を必要に応じ変更
get 'tweets/index'
get 'tweets/show/:username' => "tweets#show"


10.コントローラー、ビューの記述を必要に応じ変更
class TweetsController < ApplicationController
 def index
 end

 def show
 end
end


11.DBを設計・作成する(マイグレーションとマイグレート)
※マイグレーション スキーマ定義ファイルの作成
※マイグレート DBへ定義を適応

・空のDBの作成
rake db:create

db/development.sqlite3
※上記ファイルが自動的に記述される。(既に有るとか言われる場合も…)

・マイグレーション(定義ファイルの作成)
rails g model tweet name:string price:integer description:text

#単数(data)になっている点に注意

この時点で、下記ファイルが生成される。
app/models/tweet.rb

#単数(tweet)になっている点に注意

db/migrate/20141015040627_create_tweets.rb

#複数形(tweets)になっている点に注意



・マイグレート(スキーマ「tweet」の作成)
rake db:migrate

この時点で、下記ファイルが生成される。
db/seeds.rb
db/schema.rb


・下記ファイルに、初期値を設定
db/seeds.rb は、初期データを入れるためのファイルで、ここに書き込み

@tweet = Tweet.new
@tweet .name = 'Taro Yamada'
@tweet .price = '100'
@tweet .description= 'Kanagawa, Japan'
@tweet .save


上記を適応するのに、下記コマンドを実行
rake db:seed

ファイル名は「seeds」なのに、コマンドは「seed」な点に注意




RoR  で Bootstrap CSSを追加する。

下記のRoR開発環境で「Bootstrap」を追加してみた。

単純にGemに「Bootstrap」を追加&更新して、「Bootstrap」をCSSインポートしたらエラーになったのでメモ


■環境
・Ruby 2.0.0p576 (2014-09-19) [x64-mingw32]
・Rails 4.1.6
・OS windows8.1(64bit)


※ちなみに、「Bootstrap」とは、
Bootstrapは、CSSの「フレームワーク」といわれるもので、
「枠組み・スタイルなど」をある程度最初から定義しているライブラリ群です。


・まず、Gemfileへbootstrap-sassを追加する。(追加したのは下記の2行)

  gem 'bootstrap-sass', '2.3.2.0'
  gem 'sprockets', '2.11.0'


・Gemfileを更新したので、下記のコマンドを実行
  bundle update

・Asset Pipeline互換の行を追加する。
  修正したファイル: config/application.rb
     修正した内容   :下記の1行を追加
    config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)



  ファイル内容(例--------------------------------------
  require File.expand_path('../boot', __FILE__)
    .
    .
    .
  module SampleApp
    class Application < Rails::Application
      .
      .
      .
      config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif) 
    end
    end


・CSSにインポート
  /app/assets/stylesheets/xxxxxx.css.scss

    該当するCSSファイルに「Bootstrap」をインポート

  @import "bootstrap";

2014/10/07

ExecJS::RuntimeError in Users#index

RailsのScaffold後、サーバー起動してブラウザでアクセスすると下記のエラー

なんでやねん。。

ExecJS::RuntimeError in Users#index
/app/views/layouts/application.html.erb where line #6 raised


エラーが発生したのは、下記のファイルで、
scafold_app/app/views/layouts/application.html.erb

発生個所は、下記の4行目
1:
2:     DotinstallLesson
3:     <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
4:     <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
5:     <%= csrf_meta_tags %>
6:


解決方法は4行目の
 <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
 <%= javascript_include_tag 'defaults', 'data-turbolinks-track' => true %>
に書き換えで、表示されました。
('application' --> 'defaults' に変更)

※根本的な解決は、asset.pipelineを「false」(無効)に設定する必要が有るそうですが。。


2014/10/06

windows8.1 にruby 2.0 / rails 4.1.6 をインストール

windows8.1 にruby 2.0 / rails 4.1.6 をインストールしてみた


準備するもの
ブラウザで http://rubyinstaller.org/downloads/ を開き、下記をDLします。

・Ruby 2.0.0-p576 (x64)
・DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe


インストール手順
・rubyinstaller-2.0.0-p576-x64.exe をインストールします。
 ※途中で、PATHに追加という項目が出てくるので要チェック
 ※私は、「C\:Soft\」にインストールしました。

・コマンドプロンプトを起動し、下記コマンドを入力&実行
 gem update --system

・上記の処理が終わったら、同じく下記コマンドを実行
 gem update rake

・DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe をインストールします。
  ダブルクリックをすると、解凍先を聞かれるので、「C:\Soft\DevKit\」を指定

・コマンドプロンプトで、下記コマンドを入力&実行
  C:\Soft\DevKit\devkitvars

・上記処理が終了したら、下記コマンドを実行
 gem install json --no-ri --no-rdoc

 ※「Successfully installed json-1.8.1」とか表示されます。

・上記処理が終了したら、下記コマンドを実行
 gem install rails --version="~> 4.1.6" --no-ri --no-rdoc

・下記コマンドを実行して、作業フォルダを作成します。
 mkdir c:\Works
 mkdir c:\Works\@RoR

・下記コマンドでディレクトリを移動します。
 cd c:\Works\@RoR

・新しいプロジェクトを作成します。
 rails new foo --skip-bundle

・下記コマンドで作成したプロジェクトのディレクトリへ移動します。
 cd foo

・依存パッケージをインストールします。(下記コマンドを実行)
 bundle install

・下記コマンドを実行
 rails g scaffold user name:string email:string

 ※下記の様なエラーが表示された場合は、Gemfile を修正してください。

 ●エラー内容
   /lib/ruby/gems/2.0.0/gems/tzinfo-1.2.2/lib/tzinfo/data_source.rb:182:in `rescue in
   create_default_data_source': No source of timezone data could be found.
   (TZInfo::DataSourceNotFound)

   Please refer to http://tzinfo.github.io/datasourcenotfound for help resolving this error.

 ●修正するファイルと内容
 ・修正するファイル
  c:\Works\@RoR\foo\Gemfile

  ※普通のテキストエディタでは開かないので、
   「Sublime Text 3」というエディタを別途インストールし、該当ファイルを編集してください。

 ・修正する内容
  ■変更前
  # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
  gem 'tzinfo-data', platforms: [:mingw, :mswin]


  ■変更後
  # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
  # gem 'tzinfo-data', platforms: [:mingw, :mswin]
  gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw]

  ※ファイル更新後、コマンドプロンプトで下記コマンドを実行してください。
   bundle update

    その後、再び、下記コマンドを実行して下さい。
    rails g scaffold user name:string email:string

・下記コマンドを実行して下さい。
 rake db:migrate

・サーバーを起動します。
 rails s

 エラーが無ければ、下記の様なメッセージが表示されます。
  => Booting WEBrick
  => Rails 4.1.6 application starting in development on http://0.0.0.0:3000
  => Run `rails server -h` for more startup options
  => Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
  => Ctrl-C to shutdown server
  [2014-10-06 23:53:41] INFO  WEBrick 1.3.1
  [2014-10-06 23:53:41] INFO  ruby 2.0.0 (2014-09-19) [x64-mingw32]
  [2014-10-06 23:53:41] INFO  WEBrick::HTTPServer#start: pid=2492 port=3000


・ブラウザで、下記アドレスにアクセスします。
 http://localhost:3000

 エラー無く表示できれば、インストールは終了です。



`rescue in create_default_data_source' なるエラー

windows8(64bit)に、RubyOnRails をインストールしてみた。
はじめてのRubyで、諸々はまったのでメモ。(64bitだと色々あるらしい。)

環境
・windows8.1(64bit)
・Rails 4.1.6
・ruby 2.1.3p242 (2014-09-19 revision 47630) [x64-mingw32]


・作業
下記のURLを参考にインストールを進めてみた
http://www.oiax.jp/rails/zakkan/rails_3_1_installation_on_windows.html


1.まずハマったこと
・下記のようにSQLite3 がロードできない。とかいうエラー

 /lib/sqlite3.rb:6:in `require': cannot load such file -- sqlite3/sqlite3_native (LoadError)


・やったこと
 /Ruby21-x64/lib/ruby/gems/2.1.0/specifications/sqlite3-1.3.9-x64-mingw32.gemspec

 「Sublime Text 3」というエディタをインストールし、上記ファイルを開き

  s.require_paths=["lib"] 

   の記述箇所を

  s.require_paths= ["lib/sqlite3_native"]

   に変更

  ※ちなみにソースはここ


2. 次にハマったこと
・下記のようにデータソースが無い。とかいうエラー

/lib/tzinfo/data_source.rb:182:in `rescue in create_default_data_source': No source of timezone data could be found. (TZInfo::DataSourceNotFound)

Please refer to http://tzinfo.github.io/datasourcenotfound for help resolving this error.


・やったこと
何やらググると下記の様な記述が散見されるのですが、
初心者には、んで、この「Gemfile」ってのは、どこにあるのかしら?という
疑問しか残りませんでした。(初心者過ぎて申し訳なし)

Gemfileに以下のような記述があるので、64bit向けに修正します。
64bit版のRubyはplatformsが x64_mingw になるので、これを追加してやれば良い。つまりこうする

んで、

プロジェクトルートにある「gemfile」を同じく「Sublime Text 3」というエディタで開き
下記のように修正。

変更前
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin]


変更後
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
# gem 'tzinfo-data', platforms: [:mingw, :mswin]
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw]

色々、試したが最終的に「ruby2.1.x」ではその他のエラーが解消されない。ということが分かった。
また、「ruby2.0.x」では動作するということが分かったので再インストールした。

※「ruby2.0.x」で再インストールしたら、上記の一切のエラーは発生しなかった。。。

2014/10/02

評価版 Windowsの期間延長方法

「Windows7」や「Windows8」の評価版なるものをご存知でしょうか?

何やら無償で90日間使える。とのことで、「BootCamp」用に早速DL&インストール


 ■ちなみにダウンロードは以下から

    http://technet.microsoft.com/ja-JP/evalcenter/dn407368


    ※ダウンロードにはマイクロソフトアカウントが必要です。(無料)
     過去の製品なので早めにダウンロードして下さい。


んで、この90日が延長できたらなーと思っていたら、とある記事を発見

 via. http://myenotes.blog.fc2.com/blog-entry-12.html


以下、転載記事  -------------------------------------------------------------------------------------


評価期間が過ぎたら、以下の方法で期間を延長できます。

DOS窓を管理者として実行し、下記コマンドを入力

   slmgr -rearm


そうすると、『コマンドは正常に完了しました。 変更を有効にするにはコンピューターを再起動してください。』

と表示されますので、再起動します。


これで評価期間が延長されました。

90日評価版と言っても、実はこの90日間というのはライセンス認証してから90日間なんです。

また、ライセンス認証するまでに10日間の猶予期間がありますので、実質100日使えます。

そして、上記の方法は5回まで使える様ですので、最初の100日と合わせて600日使える事になります。


コマンドプロンプトが立ち上がりますので、そこで以下のコマンドを入力し、Enterを押します。
----------------------------------------------------------------------------------------------------


記事を読むと、なんかなーという感じで…
2、3年すると新しいOSが発売されるし。と考えると、邪な考えにジョジョに襲われていきます。
無論、目的は、評価ですが。。。