質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

Q&A

解決済

1回答

1341閲覧

ruby undefined method `find_zone!' for Time:Class (NoMethodError)というエラー

masaosan18

総合スコア65

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

0グッド

0クリップ

投稿2020/07/26 16:09

ドットインストールのActiveRecodの演習を行っています。

main.rbというファイルを作成後、ターミナルで$ ruby main.rbを実行しようとすると、undefined method `find_zone!' for Time:Class (NoMethodError)というエラーで出てしまいます。

ruby

1require 'active_record' 2require 'pp' 3 4Time.zone_default = Time.find_zone! 'Tokyo' 5ActiveRecord::Base.default_timezone = :local 6 7ActiveRecord::Base.establish_connection( 8 "adapter" => "sqlite3", 9 "database" => "./myapp.db" 10) 11 12class User < ActiveRecord::Base 13end 14 15# insert 16 17user = User.new 18user.name = "tanaka" 19user.age = 23 20user.save 21 22# user = User.new(:name => "hayashi", :age => 25) 23user = User.new(name: "hayashi", age: 25) 24user.save 25 26User.create(name: "hoshi", age: 22) 27
[vagrant@localhost activerecord_lessons]$ ruby main.rb Traceback (most recent call last): main.rb:4:in `<main>': undefined method `find_zone!' for Time:Class (NoMethodError)

これを解決し、sqliteを操作したいです。どなたか助けてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

require "active_support/all"を追加してください。
find_zone!メソッドは現在、ActiveSupportに含まれています。
参考:https://github.com/rails/rails/search?q=find_zone%21&type=Code

ActiveSupportについてはこちらを参照ください。
https://railsguides.jp/active_support_core_extensions.html

うまく動かなかった理由としては、おそらく受講されているドットインストールの講座では
Rubyやactiverecordのバージョンがかなり古いことが考えられます。

投稿2020/07/26 19:55

yamamon3215

総合スコア48

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masaosan18

2020/07/27 04:48

Error loading the 'sqlite3' Active Record adapter. Missing a gem it depends on? Could not find 'sqlite3' (~> 1.4) - did find: [sqlite3-1.3.13] (LoadError) Checked in 'GEM_PATH=/home/vagrant/.gem/ruby/2.6.0:/home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0', execute `gem env` for more information これでもエラーがでてしまいます。
yamamon3215

2020/07/27 04:57

最初のエラーと内容が変わったのはわかりますか? 最初はメソッドが見つからないというエラーでしたが今回はgemfile関連のエラーになっているため ことは進んでいる認識で大丈夫です。 エラーの内容はGemファイル(sqlite3)のバージョンが合ってないという趣旨のエラーです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問