seedie 0.4.0 → 0.4.1
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/CHANGELOG.md +30 -0
- data/README.md +11 -7
- data/lib/generators/seedie/templates/seedie_initializer.rb +14 -0
- data/lib/seedie/configuration.rb +18 -0
- data/lib/seedie/field_values/faker_builder.rb +10 -1
- data/lib/seedie/version.rb +1 -1
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 0a25c63e4fcff73414ac22c60e08d8f7e2c7cd831e0480922cd3dd64bb5598b3
         | 
| 4 | 
            +
              data.tar.gz: b824464c1d4d084856adbaec92e677ac09f1e3f983fd103ada6638df0b535d23
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 901e08a66477d23d1c108071f116206d4f530a46911402ca178baf66e433cda231c884fbbb667b186842c03e6d1b608bda31be44071d360cfdc28f1f46242482
         | 
| 7 | 
            +
              data.tar.gz: ff5a02c6f6a14af3bc041fc2d39a1550d66dcca61f1491160718cb59a5fc17a07963cf5e6302bbbc89f856796d6c4a0d0a7080167b48173023cbf5454170276d
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,3 +1,33 @@ | |
| 1 | 
            +
            ## Verson 0.4.1
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            ### New Features
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            #### Added Model-specific Custom Attributes
         | 
| 6 | 
            +
            * [GitHub PR](https://github.com/keshavbiswa/seedie/pull/47)
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            You can now define custom attributes for specific models in your `Seedie.configure` block:
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            ```ruby
         | 
| 11 | 
            +
            Seedie.configure do |config|
         | 
| 12 | 
            +
              # Default custom attribute for all models
         | 
| 13 | 
            +
              config.custom_attributes[:email] = "{{Faker::Internet.unique.email}}"
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              # Model-specific custom attribute
         | 
| 16 | 
            +
              config.custom_attributes[:user][:email] = "email_#{rand(10)}@example.com"
         | 
| 17 | 
            +
            end
         | 
| 18 | 
            +
            ```
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            ### Enhancements
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            #### Rubocop Cleanup
         | 
| 23 | 
            +
            * [GitHub PR](https://github.com/keshavbiswa/seedie/pull/45)
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            #### Improved README
         | 
| 26 | 
            +
            * [GitHub PR](https://github.com/keshavbiswa/seedie/pull/44)
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            #### Added Screencast
         | 
| 29 | 
            +
            * [GitHub PR](https://github.com/keshavbiswa/seedie/pull/46)
         | 
| 30 | 
            +
             | 
| 1 31 | 
             
            ## Version 0.4.0
         | 
| 2 32 |  | 
| 3 33 | 
             
            ### New Features
         | 
    
        data/README.md
    CHANGED
    
    | @@ -8,6 +8,10 @@ The gem includes a Rake task for seeding models and a Rails generator for easy s | |
| 8 8 | 
             
            [](https://badge.fury.io/rb/seedie)
         | 
| 9 9 | 
             
            
         | 
| 10 10 |  | 
| 11 | 
            +
            ## Screencast
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            [](https://www.youtube.com/watch?v=3W0wRrOtsTk)
         | 
| 14 | 
            +
             | 
| 11 15 | 
             
            ## Installation
         | 
| 12 16 |  | 
| 13 17 | 
             
            Add the following line to your application's Gemfile:
         | 
| @@ -54,13 +58,13 @@ $ rails generate seedie:install --blank | |
| 54 58 | 
             
            This will generate a blank seedie.yml config file for you that you can now customize according to your needs.
         | 
| 55 59 |  | 
| 56 60 | 
             
            ### Excluding Models
         | 
| 57 | 
            -
            If you want to exclude certain models while generating the `seedie.yml`, use the `-- | 
| 61 | 
            +
            If you want to exclude certain models while generating the `seedie.yml`, use the `--excluded_models` option:
         | 
| 58 62 |  | 
| 59 63 | 
             
            ```bash
         | 
| 60 | 
            -
            $ rails generate seedie:install -- | 
| 64 | 
            +
            $ rails generate seedie:install --excluded_models User Admin Post
         | 
| 61 65 | 
             
            ```
         | 
| 62 66 |  | 
| 63 | 
            -
            NOTE: Some models may not be excluded because of their dependencies. For example, if you have a model `Post` that belongs to a model `User`, then the `User` model will not be excluded even if you specify it in the `-- | 
| 67 | 
            +
            NOTE: Some models may not be excluded because of their dependencies. For example, if you have a model `Post` that belongs to a model `User`, then the `User` model will not be excluded even if you specify it in the `--excluded_models` option.
         | 
| 64 68 |  | 
| 65 69 | 
             
            You'll get a warning in your console if any models are not excluded:
         | 
| 66 70 |  | 
| @@ -113,7 +117,7 @@ $ rake seedie:seed | |
| 113 117 |  | 
| 114 118 | 
             
            This will use the configurations specified in seedie.yml to seed your models.
         | 
| 115 119 |  | 
| 116 | 
            -
            The seedie.yml file has entries for each model in your application, and you can customize the configuration for each one. | 
| 120 | 
            +
            The seedie.yml file has entries for each model in your application, and you can customize the configuration for each one.
         | 
| 117 121 |  | 
| 118 122 | 
             
            Here's an example of a more advanced configuration in seedie.yml:
         | 
| 119 123 |  | 
| @@ -133,7 +137,7 @@ models: | |
| 133 137 | 
             
                  title: "title {{index}}"
         | 
| 134 138 | 
             
                  category:
         | 
| 135 139 | 
             
                    values: [tech, sports, politics, entertainment]
         | 
| 136 | 
            -
                    options: | 
| 140 | 
            +
                    options:
         | 
| 137 141 | 
             
                      pick_strategy: random # or sequential
         | 
| 138 142 | 
             
                associations:
         | 
| 139 143 | 
             
                  has_many:
         | 
| @@ -141,7 +145,7 @@ models: | |
| 141 145 | 
             
                  belongs_to:
         | 
| 142 146 | 
             
                    user: random # or new
         | 
| 143 147 | 
             
                  has_one:
         | 
| 144 | 
            -
                    post_metadatum: | 
| 148 | 
            +
                    post_metadatum:
         | 
| 145 149 | 
             
                      attributes:
         | 
| 146 150 | 
             
                        seo_text: "{{Faker::Lorem.paragraph}}"
         | 
| 147 151 | 
             
                  has_and_belongs_to_many:
         | 
| @@ -178,7 +182,7 @@ In this file: | |
| 178 182 |  | 
| 179 183 | 
             
            ## Development
         | 
| 180 184 |  | 
| 181 | 
            -
            After checking out the repo, run `bin/setup` to install dependencies. | 
| 185 | 
            +
            After checking out the repo, run `bin/setup` to install dependencies.
         | 
| 182 186 | 
             
            Then, run `bundle exec rspec` to run the tests.
         | 
| 183 187 | 
             
            By default, the tests will supress output of the seeds progress.
         | 
| 184 188 | 
             
            Use `DEBUG_OUTPUT=true bundle exec rspec` to see the output of the seeds.
         | 
| @@ -4,5 +4,19 @@ Seedie.configure do |config| | |
| 4 4 | 
             
              # config.default_count = 10
         | 
| 5 5 |  | 
| 6 6 | 
             
              config.custom_attributes[:email] = "{{Faker::Internet.unique.email}}"
         | 
| 7 | 
            +
              # Model-Specific Custom Attributes
         | 
| 8 | 
            +
              #
         | 
| 9 | 
            +
              # Use the prepare_custom_attributes_for method to initialize the custom_attributes hash
         | 
| 10 | 
            +
              # for the specified models. This ensures that you can safely set model-specific custom
         | 
| 11 | 
            +
              # attributes without encountering NoMethodError.
         | 
| 12 | 
            +
              #
         | 
| 13 | 
            +
              # Example:
         | 
| 14 | 
            +
              # config.prepare_custom_attributes_for :user, :account
         | 
| 15 | 
            +
              #
         | 
| 16 | 
            +
              # Now you can set custom attributes for these models:
         | 
| 17 | 
            +
              # config.custom_attributes[:user][:email] = "user@example.com"
         | 
| 18 | 
            +
              # config.custom_attributes[:account][:name] = "{{Faker::Business.name}}"
         | 
| 19 | 
            +
              #
         | 
| 7 20 | 
             
              # Add more custom attributes here
         | 
| 21 | 
            +
              #
         | 
| 8 22 | 
             
            end
         | 
    
        data/lib/seedie/configuration.rb
    CHANGED
    
    | @@ -8,5 +8,23 @@ module Seedie | |
| 8 8 | 
             
                  @default_count = nil
         | 
| 9 9 | 
             
                  @custom_attributes = {}
         | 
| 10 10 | 
             
                end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                # Prepares the custom_attributes hash for the specified models.
         | 
| 13 | 
            +
                #
         | 
| 14 | 
            +
                # This method ensures that the necessary keys exist in the custom_attributes hash.
         | 
| 15 | 
            +
                # This prevents NoMethodError when setting model-specific custom attributes.
         | 
| 16 | 
            +
                #
         | 
| 17 | 
            +
                # Example usage:
         | 
| 18 | 
            +
                # config.prepare_custom_attributes_for :user, :account
         | 
| 19 | 
            +
                #
         | 
| 20 | 
            +
                # Then this will work:
         | 
| 21 | 
            +
                # config.custom_attributes[:user][:name] = "Name"
         | 
| 22 | 
            +
                # config.custom_attributes[:account][:email] = "email@example.com"
         | 
| 23 | 
            +
                #
         | 
| 24 | 
            +
                def prepare_custom_attributes_for(*models)
         | 
| 25 | 
            +
                  models.inject(@custom_attributes) do |hash, key|
         | 
| 26 | 
            +
                    hash[key] ||= {}
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
                end
         | 
| 11 29 | 
             
              end
         | 
| 12 30 | 
             
            end
         | 
| @@ -16,7 +16,8 @@ module Seedie | |
| 16 16 | 
             
                  end
         | 
| 17 17 |  | 
| 18 18 | 
             
                  def build_faker_constant
         | 
| 19 | 
            -
                     | 
| 19 | 
            +
                    custom_attribute = fetch_custom_attribute
         | 
| 20 | 
            +
                    return custom_attribute if fetch_custom_attribute
         | 
| 20 21 |  | 
| 21 22 | 
             
                    @unique_prefix = "unique." if has_validation?(:uniqueness)
         | 
| 22 23 |  | 
| @@ -39,6 +40,14 @@ module Seedie | |
| 39 40 |  | 
| 40 41 | 
             
                  private
         | 
| 41 42 |  | 
| 43 | 
            +
                  def fetch_custom_attribute
         | 
| 44 | 
            +
                    if @seedie_config_custom_attributes[@name.to_sym].is_a?(Hash)
         | 
| 45 | 
            +
                      return @seedie_config_custom_attributes.dig(@name.to_sym, @column.name.to_sym)
         | 
| 46 | 
            +
                    end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                    @seedie_config_custom_attributes[@name.to_sym]
         | 
| 49 | 
            +
                  end
         | 
| 50 | 
            +
             | 
| 42 51 | 
             
                  def add_faker_class_and_method(type)
         | 
| 43 52 | 
             
                    case type
         | 
| 44 53 | 
             
                    when :string, :text, :citext
         | 
    
        data/lib/seedie/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: seedie
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.4. | 
| 4 | 
            +
              version: 0.4.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Keshav Biswa
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2025-01-29 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: activerecord
         | 
| @@ -189,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 189 189 | 
             
                - !ruby/object:Gem::Version
         | 
| 190 190 | 
             
                  version: '0'
         | 
| 191 191 | 
             
            requirements: []
         | 
| 192 | 
            -
            rubygems_version: 3.4. | 
| 192 | 
            +
            rubygems_version: 3.4.10
         | 
| 193 193 | 
             
            signing_key:
         | 
| 194 194 | 
             
            specification_version: 4
         | 
| 195 195 | 
             
            summary: Automate Database Seeding For ActiveRecord
         |