I am new to Ruby On Rails, and currently trying to modify an existing (uncomplete) plugin from github. Things went smoothly until I am trying to add new models to this plugin.
I know script/generate model, and script/generate plugin. But how to add models into a plugin without regenerate the whole plugin? I don't want rewrite the plugin to add functions to it, and script/generate model vendor/plugin/myPlugin wilt generate other stuff into the whole project rather than the plugin directory.
Probably I could write the model class file myself, but how about migration, create my own rake file?
Note: The plugin has more than one classes and a couples of migrate schema named as datetime_create_model_name.rb. But I couldn't find any generator in the plugin Dir?
Write a generator for the plugin, to create the migration scripts for the new model. Refer to some of the existing plugins, to learn how to write a generator.
Here is one example:
1) Generator file
2) Migration template file
Related
I am making a new rails scaffold generator to replace the default one, most of the files remain the same, only some are different. So how do I invoke some of the default scaffold files within my generator?
Also, is there a way I can checkout the source code of the original scaffold generator?
The source code is in the railties section of the project on github. To gain access to the scaffold templates, I would just invoke the actual scaffold generator and then gsub the files if you need to make changes.
There are these railscasts.
http://railscasts.com/episodes/218-making-generators-in-rails-3 With this one you find out how
to create a stylesheets and scaffold generator.
http://railscasts.com/episodes/216-generators-in-rails-3 With this one you find out how to add some files to modify the scaffolding views.
I want to do a mix of the two. I would like to create a generator that also creates scaffolding views. Kinda like Ryan Bates nifty generators or web_app_theme gem (https://github.com/pilu/web-app-theme). I have been searching for a tutorial or some information to point me in the right direction but I can't find exactly what I'm looking for.
I know I'm close. I already know how to create a generator with Railcast 218 but now, how can I make it create view files too?
I would like to run a command like this...
rails g my_scaffold_generator Post title:string body:text
This may well be too late to help, but as I found this while Googling for the same info...
It seems to me that the best approach, at least for learning the ropes, is to duplicate and then alter the existing scaffold generator.
So the first thing that tripped me up is finding the default templates, which do not live in your rails-3.2.0 directory (or whatever version you are on), but in railties-3.2.0. So for my RVM-based installation they were at:
/Users/leo/.rvm/gems/ruby-1.9.3-p194#gemset/gems/railties-3.2.0/lib/rails/generators/
[Note: your gems directory could be somewhere else entirely, use $> gem environment to find your gem paths]
In here is erb/scaffold/templates/ which has the files you'd expect (new.html.erb, _form.html.erb etc).
You can copy these files to your app's root, into lib/templates/erb/scaffold/ and they will be used instead of the default ones.
If you want to use these in a custom generator, there are two approaches:
1) Use hook_for to call the regular ERB scaffold generator from your generator.
2) Move/process the templates inside your own custom generator, using copy_file and similar methods in Thor to move them into place.
There is a decent Rails Guide on this, although I found I didn't really get it until I started digging around in .../railties-3.2.0/lib/rails/generators/... and looking at how the defaults are structured.
I used generate scaffold to setup the basic RESTful actions however I want to extend the actions to include something like 'purchase'. Is there a way to use the command line to generate the boilerplate (stub functions in controller file and updated route file?)?
As far as I can tell generate controller either wipes or leaves the existing file - there's no nice way to merge them.
Not by default. However, realize that in Rails 3, customizing generators isn't terribly difficult. See Creating and Customizing Rails Generators & Templates, and Bates' screencast on Generators in Rails 3.
Regarding your second "question," that's right -- the file is either replaced or overwritten.
we have an application that uses a centralized domain using an inline plugin. We where using bootstrap data so all of our applications that use the domain could use the bootstrap. Now when using the Fixture plugin we run into the problem that it wants to read the fixture files from a location inside application instead of the shared inline plugin. All .load() methods look for a fixture file inside the application.
Is there a way of loading the fixture files from a central place instead of the fixture directory inside the application?
Currently this is not possible.
See Grails Jira issues:
http://jira.grails.org/browse/GPFIXTURES-16
I had the same problem so I created a config value that allows you to set a config value.
This commit should do the trick, but it's not merged into the plugin (yet):
https://github.com/nwittstruck/grails-fixtures/commit/1cea0da7bf32303885cc536fe89bb9be483375bc
What changes do you need to make to a Rails project to configure blueprintcss as the default stylesheet to be used when you generate scaffolding instead of scaffold.css?
I'd recommend writing your own generator, but if you want to alter the default you can:
1 - For a single app: Freeze rails and change the stylesheet the scaffold generator uses.
railsapp/vendor/rails/railties/lib/rails_generators/generators/components/scaffold/templates/style.css
2 - For all apps: Change the same style.css file in your systems rails installation.
Substitute your own scaffolding generation code. Instructions are here (with the caveat that they may be out of date).
An easier alternative may be to write a Rake action to do textual substitution in the (normally) generated source.
Look into Rails Templates.
You can write one to do much more than replace the css in a rails app. YOu can make it install gems, freeze rails, all kinds of things. Take a look at http://youvegotrails.com for an idea of what you can do.