meibo 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/meibo/academic_session_set.rb +1 -1
- data/lib/meibo/builder.rb +4 -4
- data/lib/meibo/classroom_set.rb +3 -10
- data/lib/meibo/course_set.rb +2 -8
- data/lib/meibo/data_set.rb +5 -2
- data/lib/meibo/demographic_set.rb +1 -6
- data/lib/meibo/enrollment_set.rb +3 -10
- data/lib/meibo/factory_bot/all.rb +1 -1
- data/lib/meibo/factory_bot/{memory_package.rb → roster.rb} +1 -3
- data/lib/meibo/factory_bot/user.rb +8 -0
- data/lib/meibo/japan_profile/academic_session.rb +1 -1
- data/lib/meibo/japan_profile/classroom.rb +4 -2
- data/lib/meibo/japan_profile/course.rb +1 -1
- data/lib/meibo/japan_profile/demographic.rb +1 -1
- data/lib/meibo/japan_profile/enrollment.rb +1 -1
- data/lib/meibo/japan_profile/organization.rb +1 -1
- data/lib/meibo/japan_profile/role.rb +1 -1
- data/lib/meibo/japan_profile/user.rb +1 -1
- data/lib/meibo/japan_profile/user_set.rb +16 -0
- data/lib/meibo/japan_profile.rb +15 -17
- data/lib/meibo/organization_set.rb +1 -1
- data/lib/meibo/{base_profile.rb → profile.rb} +29 -5
- data/lib/meibo/reader.rb +1 -1
- data/lib/meibo/role_set.rb +3 -10
- data/lib/meibo/roster.rb +15 -11
- data/lib/meibo/user.rb +1 -1
- data/lib/meibo/user_profile_set.rb +1 -6
- data/lib/meibo/user_set.rb +2 -7
- data/lib/meibo/version.rb +1 -1
- metadata +5 -5
- data/lib/meibo/japan_profile/user_profile.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 21b36f34e47cc0cf3e7ec35cf14f2e0ec6e9b3ba42f12286b18b72f2d7c680fe
|
4
|
+
data.tar.gz: e576cb1930c7e2df3aac74b0a3810c7cf7013f25238fbe16ab763b87f66d6046
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: de81e72cff7f4fc8817d818fe211e3d7a6e83966b20bfde5de6c579d059d122ced9a98709acf37e7e997b1b3aeea5ac7f62a29b07bc7b3d9300744ce48f3a56d
|
7
|
+
data.tar.gz: 58c35c5ae0e31e6981816219fe893cc294336b6c58bb99a3c62227d77e063c86bf29c536165ccd7eaa22643db1d280ab85cf17cd511d8a9deb13e45c0f822adb
|
data/Gemfile.lock
CHANGED
data/lib/meibo/builder.rb
CHANGED
@@ -6,12 +6,12 @@ module Meibo
|
|
6
6
|
class Builder
|
7
7
|
extend Forwardable
|
8
8
|
|
9
|
-
attr_reader :
|
9
|
+
attr_reader :roster, :profile
|
10
10
|
|
11
|
-
def_delegators :@
|
11
|
+
def_delegators :@roster, :academic_sessions, :classes, :courses, :demographics, :enrollments, :organizations, :roles, :users, :user_profiles
|
12
12
|
|
13
|
-
def initialize(
|
14
|
-
@
|
13
|
+
def initialize(roster:, profile: Profile.new)
|
14
|
+
@roster = roster
|
15
15
|
@profile = profile
|
16
16
|
end
|
17
17
|
|
data/lib/meibo/classroom_set.rb
CHANGED
@@ -2,26 +2,19 @@
|
|
2
2
|
|
3
3
|
module Meibo
|
4
4
|
class ClassroomSet < DataSet
|
5
|
-
def initialize(data, academic_session_set:, course_set:, organization_set:)
|
6
|
-
super(data)
|
7
|
-
@academic_session_set = academic_session_set
|
8
|
-
@course_set = course_set
|
9
|
-
@organization_set = organization_set
|
10
|
-
end
|
11
|
-
|
12
5
|
def check_semantically_consistent
|
13
6
|
super
|
14
7
|
|
15
8
|
each do |classroom|
|
16
|
-
|
17
|
-
|
9
|
+
roster.organizations.find(classroom.school_sourced_id)
|
10
|
+
roster.courses.find(classroom.course_sourced_id)
|
18
11
|
|
19
12
|
if classroom.term_sourced_ids.empty?
|
20
13
|
raise DataNotFoundError, "termSourcedIdは1つ以上指定してください"
|
21
14
|
end
|
22
15
|
|
23
16
|
classroom.term_sourced_ids.each do |term_sourced_id|
|
24
|
-
|
17
|
+
roster.academic_sessions.find(term_sourced_id)
|
25
18
|
end
|
26
19
|
end
|
27
20
|
end
|
data/lib/meibo/course_set.rb
CHANGED
@@ -2,21 +2,15 @@
|
|
2
2
|
|
3
3
|
module Meibo
|
4
4
|
class CourseSet < DataSet
|
5
|
-
def initialize(data, academic_session_set:, organization_set:)
|
6
|
-
super(data)
|
7
|
-
@academic_session_set = academic_session_set
|
8
|
-
@organization_set = organization_set
|
9
|
-
end
|
10
|
-
|
11
5
|
def check_semantically_consistent
|
12
6
|
super
|
13
7
|
|
14
8
|
each do |course|
|
15
9
|
if course.school_year_sourced_id
|
16
|
-
|
10
|
+
roster.academic_sessions.find(course.school_year_sourced_id)
|
17
11
|
end
|
18
12
|
|
19
|
-
|
13
|
+
roster.organizations.find(course.org_sourced_id)
|
20
14
|
end
|
21
15
|
end
|
22
16
|
end
|
data/lib/meibo/data_set.rb
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
module Meibo
|
2
2
|
class DataSet
|
3
|
-
|
3
|
+
attr_reader :roster
|
4
|
+
|
5
|
+
def initialize(data, roster:)
|
4
6
|
@data = data
|
5
7
|
@data_hash = data.to_h {|datum| [datum.sourced_id, datum] }
|
8
|
+
@roster = roster
|
6
9
|
end
|
7
10
|
|
8
11
|
def <<(new_data)
|
@@ -31,7 +34,7 @@ module Meibo
|
|
31
34
|
@data.empty?
|
32
35
|
end
|
33
36
|
|
34
|
-
def
|
37
|
+
def find(sourced_id)
|
35
38
|
@data_hash.fetch(sourced_id)
|
36
39
|
rescue KeyError
|
37
40
|
raise DataNotFoundError, "sourcedId: #{sourced_id} が見つかりません"
|
@@ -2,16 +2,11 @@
|
|
2
2
|
|
3
3
|
module Meibo
|
4
4
|
class DemographicSet < DataSet
|
5
|
-
def initialize(data, user_set:)
|
6
|
-
super(data)
|
7
|
-
@user_set = user_set
|
8
|
-
end
|
9
|
-
|
10
5
|
def check_semantically_consistent
|
11
6
|
super
|
12
7
|
|
13
8
|
each do |demographic|
|
14
|
-
|
9
|
+
roster.users.find(demographic.sourced_id)
|
15
10
|
end
|
16
11
|
end
|
17
12
|
end
|
data/lib/meibo/enrollment_set.rb
CHANGED
@@ -2,20 +2,13 @@
|
|
2
2
|
|
3
3
|
module Meibo
|
4
4
|
class EnrollmentSet < DataSet
|
5
|
-
def initialize(data, classroom_set:, organization_set:, user_set:)
|
6
|
-
super(data)
|
7
|
-
@classroom_set = classroom_set
|
8
|
-
@organization_set = organization_set
|
9
|
-
@user_set = user_set
|
10
|
-
end
|
11
|
-
|
12
5
|
def check_semantically_consistent
|
13
6
|
super
|
14
7
|
|
15
8
|
each do |enrollment|
|
16
|
-
|
17
|
-
|
18
|
-
|
9
|
+
roster.classes.find(enrollment.class_sourced_id)
|
10
|
+
roster.organizations.find(enrollment.school_sourced_id)
|
11
|
+
roster.users.find(enrollment.user_sourced_id)
|
19
12
|
end
|
20
13
|
end
|
21
14
|
end
|
@@ -6,8 +6,8 @@ require 'meibo/factory_bot/course'
|
|
6
6
|
require 'meibo/factory_bot/demographic'
|
7
7
|
require 'meibo/factory_bot/enrollment'
|
8
8
|
require 'meibo/factory_bot/manifest'
|
9
|
-
require 'meibo/factory_bot/memory_package'
|
10
9
|
require 'meibo/factory_bot/organization'
|
11
10
|
require 'meibo/factory_bot/role'
|
11
|
+
require 'meibo/factory_bot/roster'
|
12
12
|
require 'meibo/factory_bot/user_profile'
|
13
13
|
require 'meibo/factory_bot/user'
|
@@ -19,4 +19,12 @@ FactoryBot.define do
|
|
19
19
|
agent_sourced_ids { agents&.map(&:sourced_id) }
|
20
20
|
primary_org_sourced_id { primary_organization&.sourced_id }
|
21
21
|
end
|
22
|
+
|
23
|
+
factory :meibo_jp_user, class: 'Meibo::JapanProfile::User', parent: :meibo_user do
|
24
|
+
transient do
|
25
|
+
homeroom { nil }
|
26
|
+
end
|
27
|
+
|
28
|
+
home_class { homeroom&.sourced_id }
|
29
|
+
end
|
22
30
|
end
|
@@ -1,11 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Meibo
|
4
|
-
|
4
|
+
class JapanProfile < ::Meibo::Profile
|
5
5
|
class Classroom < ::Meibo::Classroom
|
6
6
|
DataModel.define(
|
7
7
|
self,
|
8
|
-
attribute_name_to_header_field_map: superclass.attribute_name_to_header_field_map.merge(
|
8
|
+
attribute_name_to_header_field_map: superclass.attribute_name_to_header_field_map.merge(
|
9
|
+
special_needs: 'metadata.jp.specialNeeds'
|
10
|
+
).freeze,
|
9
11
|
converters: superclass.converters.merge(
|
10
12
|
boolean: [:special_needs].freeze,
|
11
13
|
enum: { class_type: TYPES.values.freeze }.freeze
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Meibo
|
4
|
+
class JapanProfile < ::Meibo::Profile
|
5
|
+
class UserSet < ::Meibo::UserSet
|
6
|
+
def check_semantically_consistent
|
7
|
+
super
|
8
|
+
each do |user|
|
9
|
+
if user.home_class
|
10
|
+
roster.classes.find(user.home_class)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/meibo/japan_profile.rb
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Meibo
|
4
|
-
|
5
|
-
include BaseProfile
|
6
|
-
|
4
|
+
class JapanProfile < ::Meibo::Profile
|
7
5
|
BUILDERS = {
|
8
6
|
academic_session: Builder::AcademicSessionBuilder.create(AcademicSession),
|
9
7
|
class: Builder::ClassroomBuilder.create(Classroom),
|
@@ -17,23 +15,23 @@ module Meibo
|
|
17
15
|
}
|
18
16
|
|
19
17
|
DATA_MODELS = {
|
20
|
-
file_academic_sessions:
|
21
|
-
file_classes:
|
22
|
-
file_courses:
|
23
|
-
file_demographics:
|
24
|
-
file_enrollments:
|
25
|
-
file_orgs:
|
26
|
-
file_roles:
|
27
|
-
file_user_profiles:
|
28
|
-
file_users:
|
18
|
+
file_academic_sessions: AcademicSession,
|
19
|
+
file_classes: Classroom,
|
20
|
+
file_courses: Course,
|
21
|
+
file_demographics: Demographic,
|
22
|
+
file_enrollments: Enrollment,
|
23
|
+
file_orgs: Organization,
|
24
|
+
file_roles: Role,
|
25
|
+
file_user_profiles: UserProfile,
|
26
|
+
file_users: User
|
29
27
|
}
|
30
28
|
|
31
|
-
|
32
|
-
|
33
|
-
|
29
|
+
DATA_SET = ::Meibo::Profile::DATA_SET.merge(
|
30
|
+
users: UserSet
|
31
|
+
)
|
34
32
|
|
35
|
-
def
|
36
|
-
|
33
|
+
def initialize(builders: BUILDERS, data_models: DATA_MODELS, data_set: DATA_SET)
|
34
|
+
super
|
37
35
|
end
|
38
36
|
end
|
39
37
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Meibo
|
4
|
-
|
4
|
+
class Profile
|
5
5
|
BUILDERS = {
|
6
6
|
academic_session: Builder::AcademicSessionBuilder.create(AcademicSession),
|
7
7
|
class: Builder::ClassroomBuilder.create(Classroom),
|
@@ -26,12 +26,36 @@ module Meibo
|
|
26
26
|
file_users: Meibo::User
|
27
27
|
}
|
28
28
|
|
29
|
-
|
30
|
-
|
29
|
+
DATA_SET = {
|
30
|
+
academic_sessions: Meibo::AcademicSessionSet,
|
31
|
+
classes: Meibo::ClassroomSet,
|
32
|
+
courses: Meibo::CourseSet,
|
33
|
+
demographics: Meibo::DemographicSet,
|
34
|
+
enrollments: Meibo::EnrollmentSet,
|
35
|
+
orgs: Meibo::OrganizationSet,
|
36
|
+
roles: Meibo::RoleSet,
|
37
|
+
user_profiles: Meibo::UserProfileSet,
|
38
|
+
users: Meibo::UserSet
|
39
|
+
}
|
40
|
+
|
41
|
+
attr_reader :builders, :data_models, :data_set
|
42
|
+
|
43
|
+
def initialize(builders: BUILDERS, data_models: DATA_MODELS, data_set: DATA_SET)
|
44
|
+
@builders = builders
|
45
|
+
@data_models = data_models
|
46
|
+
@data_set = data_set
|
47
|
+
end
|
48
|
+
|
49
|
+
def builder_for(key)
|
50
|
+
builders[key]
|
51
|
+
end
|
52
|
+
|
53
|
+
def data_model_for(file_attribute)
|
54
|
+
data_models[file_attribute]
|
31
55
|
end
|
32
56
|
|
33
|
-
def
|
34
|
-
|
57
|
+
def data_set_for(name)
|
58
|
+
data_set[name]
|
35
59
|
end
|
36
60
|
end
|
37
61
|
end
|
data/lib/meibo/reader.rb
CHANGED
data/lib/meibo/role_set.rb
CHANGED
@@ -2,22 +2,15 @@
|
|
2
2
|
|
3
3
|
module Meibo
|
4
4
|
class RoleSet < DataSet
|
5
|
-
def initialize(data, organization_set:, user_set:, user_profile_set:)
|
6
|
-
super(data)
|
7
|
-
@organization_set = organization_set
|
8
|
-
@user_set = user_set
|
9
|
-
@user_profile_set = user_profile_set
|
10
|
-
end
|
11
|
-
|
12
5
|
def check_semantically_consistent
|
13
6
|
super
|
14
7
|
|
15
8
|
each do |role|
|
16
|
-
|
17
|
-
|
9
|
+
roster.organizations.find(role.org_sourced_id)
|
10
|
+
roster.users.find(role.user_sourced_id)
|
18
11
|
|
19
12
|
if role.user_profile_sourced_id
|
20
|
-
|
13
|
+
roster.user_profiles.find(role.user_profile_sourced_id)
|
21
14
|
end
|
22
15
|
end
|
23
16
|
end
|
data/lib/meibo/roster.rb
CHANGED
@@ -6,7 +6,7 @@ require 'csv'
|
|
6
6
|
module Meibo
|
7
7
|
class Roster
|
8
8
|
class << self
|
9
|
-
def from_file(file_path, profile:
|
9
|
+
def from_file(file_path, profile: Profile.new)
|
10
10
|
Reader.open(file_path, profile: profile) do |reader|
|
11
11
|
begin
|
12
12
|
manifest = reader.manifest
|
@@ -66,18 +66,22 @@ module Meibo
|
|
66
66
|
|
67
67
|
attr_reader :profile, :manifest_properties, :academic_sessions, :classes, :courses, :demographics, :enrollments, :organizations, :roles, :user_profiles, :users
|
68
68
|
|
69
|
-
def initialize(profile:
|
69
|
+
def initialize(profile: Profile.new, manifest_properties: {}, academic_sessions: [], classes: [], courses: [], demographics: [], enrollments: [], organizations: [], roles: [], user_profiles: [], users: [])
|
70
70
|
@profile = profile
|
71
71
|
@manifest_properties = manifest_properties
|
72
|
-
@academic_sessions = AcademicSessionSet.new(academic_sessions)
|
73
|
-
@organizations = OrganizationSet.new(organizations)
|
74
|
-
@courses = CourseSet.new(courses,
|
75
|
-
@classes = ClassroomSet.new(classes,
|
76
|
-
@users = UserSet.new(users,
|
77
|
-
@demographics = DemographicSet.new(demographics,
|
78
|
-
@user_profiles = UserProfileSet.new(user_profiles,
|
79
|
-
@roles = RoleSet.new(roles,
|
80
|
-
@enrollments = EnrollmentSet.new(enrollments,
|
72
|
+
@academic_sessions = AcademicSessionSet.new(academic_sessions, roster: self)
|
73
|
+
@organizations = OrganizationSet.new(organizations, roster: self)
|
74
|
+
@courses = CourseSet.new(courses, roster: self)
|
75
|
+
@classes = ClassroomSet.new(classes, roster: self)
|
76
|
+
@users = UserSet.new(users, roster: self)
|
77
|
+
@demographics = DemographicSet.new(demographics, roster: self)
|
78
|
+
@user_profiles = UserProfileSet.new(user_profiles, roster: self)
|
79
|
+
@roles = RoleSet.new(roles, roster: self)
|
80
|
+
@enrollments = EnrollmentSet.new(enrollments, roster: self)
|
81
|
+
end
|
82
|
+
|
83
|
+
def builder
|
84
|
+
Builder.new(roster: self, profile: profile)
|
81
85
|
end
|
82
86
|
|
83
87
|
def check_semantically_consistent
|
data/lib/meibo/user.rb
CHANGED
@@ -41,7 +41,7 @@ module Meibo
|
|
41
41
|
}.freeze
|
42
42
|
)
|
43
43
|
|
44
|
-
def initialize(sourced_id:, status: nil, date_last_modified: nil, enabled_user: nil, username:, user_ids: nil, given_name:, family_name:, middle_name: nil, identifier: nil, email: nil, sms: nil, phone: nil, agent_sourced_ids: [], grades: nil, password: nil, user_master_identifier: nil, resource_sourced_ids: nil, preferred_given_name: nil, preferred_middle_name: nil, preferred_family_name: nil, primary_org_sourced_id: nil, pronouns: nil,
|
44
|
+
def initialize(sourced_id:, status: nil, date_last_modified: nil, enabled_user: nil, username:, user_ids: nil, given_name:, family_name:, middle_name: nil, identifier: nil, email: nil, sms: nil, phone: nil, agent_sourced_ids: [], grades: nil, password: nil, user_master_identifier: nil, resource_sourced_ids: nil, preferred_given_name: nil, preferred_middle_name: nil, preferred_family_name: nil, primary_org_sourced_id: nil, pronouns: nil, **extension_fields)
|
45
45
|
@sourced_id = sourced_id
|
46
46
|
@status = status
|
47
47
|
@date_last_modified = date_last_modified
|
@@ -2,16 +2,11 @@
|
|
2
2
|
|
3
3
|
module Meibo
|
4
4
|
class UserProfileSet < DataSet
|
5
|
-
def initialize(data, user_set:)
|
6
|
-
super(data)
|
7
|
-
@user_set = user_set
|
8
|
-
end
|
9
|
-
|
10
5
|
def check_semantically_consistent
|
11
6
|
super
|
12
7
|
|
13
8
|
each do |user_profile|
|
14
|
-
|
9
|
+
roster.users.find(user_profile.user_sourced_id)
|
15
10
|
end
|
16
11
|
end
|
17
12
|
end
|
data/lib/meibo/user_set.rb
CHANGED
@@ -2,21 +2,16 @@
|
|
2
2
|
|
3
3
|
module Meibo
|
4
4
|
class UserSet < DataSet
|
5
|
-
def initialize(data, organization_set:)
|
6
|
-
super(data)
|
7
|
-
@organization_set = organization_set
|
8
|
-
end
|
9
|
-
|
10
5
|
def check_semantically_consistent
|
11
6
|
super
|
12
7
|
|
13
8
|
each do |user|
|
14
9
|
if user.primary_org_sourced_id
|
15
|
-
|
10
|
+
roster.organizations.find(user.primary_org_sourced_id)
|
16
11
|
end
|
17
12
|
|
18
13
|
user.agent_sourced_ids.each do |agent_sourced_id|
|
19
|
-
|
14
|
+
find(agent_sourced_id)
|
20
15
|
end
|
21
16
|
end
|
22
17
|
end
|
data/lib/meibo/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: meibo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Seiei Miyagi
|
@@ -57,7 +57,6 @@ files:
|
|
57
57
|
- lib/meibo.rb
|
58
58
|
- lib/meibo/academic_session.rb
|
59
59
|
- lib/meibo/academic_session_set.rb
|
60
|
-
- lib/meibo/base_profile.rb
|
61
60
|
- lib/meibo/builder.rb
|
62
61
|
- lib/meibo/builder/academic_session_builder.rb
|
63
62
|
- lib/meibo/builder/base_builder.rb
|
@@ -88,9 +87,9 @@ files:
|
|
88
87
|
- lib/meibo/factory_bot/demographic.rb
|
89
88
|
- lib/meibo/factory_bot/enrollment.rb
|
90
89
|
- lib/meibo/factory_bot/manifest.rb
|
91
|
-
- lib/meibo/factory_bot/memory_package.rb
|
92
90
|
- lib/meibo/factory_bot/organization.rb
|
93
91
|
- lib/meibo/factory_bot/role.rb
|
92
|
+
- lib/meibo/factory_bot/roster.rb
|
94
93
|
- lib/meibo/factory_bot/user.rb
|
95
94
|
- lib/meibo/factory_bot/user_profile.rb
|
96
95
|
- lib/meibo/japan_profile.rb
|
@@ -102,11 +101,12 @@ files:
|
|
102
101
|
- lib/meibo/japan_profile/organization.rb
|
103
102
|
- lib/meibo/japan_profile/role.rb
|
104
103
|
- lib/meibo/japan_profile/user.rb
|
105
|
-
- lib/meibo/japan_profile/
|
104
|
+
- lib/meibo/japan_profile/user_set.rb
|
106
105
|
- lib/meibo/manifest.rb
|
107
106
|
- lib/meibo/manifest/processing_mode.rb
|
108
107
|
- lib/meibo/organization.rb
|
109
108
|
- lib/meibo/organization_set.rb
|
109
|
+
- lib/meibo/profile.rb
|
110
110
|
- lib/meibo/reader.rb
|
111
111
|
- lib/meibo/role.rb
|
112
112
|
- lib/meibo/role_set.rb
|
@@ -125,7 +125,7 @@ metadata:
|
|
125
125
|
allowed_push_host: https://rubygems.org/
|
126
126
|
homepage_uri: https://github.com/hanachin/meibo
|
127
127
|
source_code_uri: https://github.com/hanachin/meibo
|
128
|
-
changelog_uri: https://github.com/hanachin/meibo/blob/meibo/v0.
|
128
|
+
changelog_uri: https://github.com/hanachin/meibo/blob/meibo/v0.2.0/CHANGELOG.md
|
129
129
|
post_install_message:
|
130
130
|
rdoc_options: []
|
131
131
|
require_paths:
|