質問編集履歴

1

事象再現方法を詳細に記載した.

2017/10/07 13:34

投稿

pomme
pomme

スコア7

test CHANGED
File without changes
test CHANGED
@@ -30,31 +30,41 @@
30
30
 
31
31
  ###該当のソースコード
32
32
 
33
- seeds.rbで以下を記載しrails db:seedると上述のエラーが発生
33
+ 以下,方法にて事象再現可能だと思います.Railsバージョンは5.1.4です.
34
34
 
35
- ```ruby
36
-
37
- require 'mylib'
35
+ 1 以下コマンドを実行する.
38
-
39
-
40
-
41
- Mylib::get_foos.each do |foo|
42
-
43
- Foo.create(:name => foo.name)
44
-
45
- end
46
36
 
47
37
  ```
48
38
 
39
+ $ rails new footest
40
+
41
+ $ cd footest
42
+
43
+ $ mkdir lib/mylib
44
+
45
+ $ vi lib/mylib/foo.rb
46
+
47
+ ```
48
+
49
+ 2 以下内容のfoo.rbを作成する.
50
+
49
- ```ruby
51
+ ```ruby
50
52
 
51
53
  module Mylib
52
54
 
53
55
  class Foo
54
56
 
55
- .....
57
+ attr_reader :name
56
58
 
59
+
60
+
61
+ def initialize name
62
+
63
+ @name = name
64
+
57
- end
65
+ end
66
+
67
+ end
58
68
 
59
69
 
60
70
 
@@ -62,11 +72,99 @@
62
72
 
63
73
 
64
74
 
75
+ end
76
+
77
+ end
78
+
79
+ ```
80
+
81
+ 3 config/application.rbのclass Application内にconfig.autoload_pathsの行を追加する.
82
+
83
+ ```ruby
84
+
85
+ module Footest
86
+
87
+ class Application < Rails::Application
88
+
89
+ # Initialize configuration defaults for originally generated Rails version.
90
+
91
+ config.load_defaults 5.1
92
+
93
+
94
+
95
+ # Settings in config/environments/* take precedence over those specified here.
96
+
97
+ # Application configuration should go into files in config/initializers
98
+
99
+ # -- all .rb files in that directory are automatically loaded.
100
+
101
+
102
+
103
+ config.autoload_paths += %W(#{config.root}/lib/mylib) #追記
104
+
65
105
  end
66
106
 
67
- end
107
+ end
68
108
 
69
109
  ```
110
+
111
+ 4 以下コマンドを実行する.
112
+
113
+ ```
114
+
115
+ $ rails generate scaffold Foo name:string
116
+
117
+ $ rails db:migrate
118
+
119
+ ```
120
+
121
+ 5 db/seeds.rbに以下内容を記載する.
122
+
123
+ ```ruby
124
+
125
+ require 'foo'
126
+
127
+
128
+
129
+ a = Mylib::Foo.new("foo")
130
+
131
+ puts a.name
132
+
133
+ Foo.create(:name => a.name)
134
+
135
+ ```
136
+
137
+ 6 以下コマンドを実行すると,エラーが発生します.
138
+
139
+ ```
140
+
141
+ $ rails db:seed
142
+
143
+ foo
144
+
145
+ rails aborted!
146
+
147
+ LoadError: Unable to autoload constant Foo, expected /path_to/footest/lib/mylib/foo.rb to define it
148
+
149
+ /path_to/footest/db/seeds.rb:13:in `<top (required)>'
150
+
151
+ /path_to/footest/bin/rails:9:in `require'
152
+
153
+ /path_to/footest/bin/rails:9:in `<top (required)>'
154
+
155
+ /path_to/footest/bin/spring:15:in `<top (required)>'
156
+
157
+ bin/rails:3:in `load'
158
+
159
+ bin/rails:3:in `<main>'
160
+
161
+ Tasks: TOP => db:seed
162
+
163
+ (See full trace by running task with --trace)
164
+
165
+ ```
166
+
167
+
70
168
 
71
169
  ###試したこと
72
170