Yeoman find version of the generator and upgrade - yeoman

Once an app has been created with a Yeoman Generator, is there a way to find which version of the generator was used ?
And subsidiary question, if a newer version of the generator exists, is it possible to upgrade my existing app ?

I've just tried yo webapp, if you look at the first line in Gruntfile.js you will see
// Generated on 2013-12-11 using generator-webapp 0.4.4
I don't think you can update your app with a more recent version of the same generator, since the generator creates a folder structure and a starting point with packages and configurations it would easily conflict.
Generally speaking you are getting a starting point from the generator, upon which you build your application, if you are in need of different packages you just proceed from the starting point in your direction, adding packages, components, etc...

Related

How do I install a project built with bazel?

I am working on a project that is transitioning from CMake to Bazel. One critical feature that we are apparently losing in the bargain is the ability to install the project, so that it can be used by other (not necessarily Bazel) projects.
AFAICT, there is currently no built in support for installing a project?!
I need to create a portable (must work on at least Linux and MacOS) way to install the project. Specifically:
I need to be able to specify libraries, headers, executables, and other files (e.g. LICENSE) that need to be installed.
The user needs to be able to specify an absolute prefix where things should be installed.
I really, really should be able to execute the "install" step more than once, giving different prefixes each time, without Bazel getting confused (i.e. it must not try to "remember" what files it already installed, or if it does, must understand when the prefix is different from last time).
Libraries should be installed to the right place (e.g. lib64), or at least it should be possible for the user to specify the correct libdir.
The install step MUST NOT touch the time stamp on any file from a previous install that has not changed. (Ideally, Bazel itself would handle this; using the install command is tricky and has potential portability issues. Note platform requirements, above.)
What is the best way to go about doing this?
Unless you want to do specific package (e.g. deb or rpm), you probably want to create an executable rule that does the install for you.
You can create a rule that would create an executable (e.g. a shell script) that does the install for you (e.g. do checksums to check if there are change to the installed file and does the actual copy of the files if they have changed). You would have to use the extension language to do, that would look similar to what the docker rules does to load an image with the incremental loader
Addition: I forgot to say that the install itself would be run by using the run command: bazel run install if the rule is named install in the top level BUILD file.

What is the best practice for maintenance module dependencies on yeoman generator

I create a yeoman generator to help myself with front end development.
The problem is, our development environment, framework, plugins are changing so fast...
I have to update dependencies in the package.json in yeoman generator's template directory.
But, usually the package.json in yeoman generator is renamed like _package.json, because of the generator, so I cannot do just npm update.
So, I'll ask you what is the best way to update node modules in _package.json.
Thanks.
For what it's worth, npm update just update dependencies to the latest version matching your package.json dependencies semver ranger. It won't update the file itself.
To know which dependencies are outdated, you can either use npm outdated or a tool like david.
What I usually do with my project is to run one of these tools on a newly generated project. This might not seems ideal, but it's actually the best way to go because:
You ensure your generator is still working (things can break overtime if we're not careful)
You'll be able to test the new versions against your project and see where you need to fix your code so it work with latest release and breaking changes.
Also, npm using semver to set versions, this mean you only need to bump dependencies when a new major version is released. This tends to not happen all that often.
#Simon
Thank you for mention that I misunderstood the behavior of npm update.
Now I do the following step to update _package.json in generator.
create project from the generator yo generator-name
update package.json use npm-check-update.
ensure everything goes ok.
copy package.json into _package.json in generator
But I want to do this like
automatically update package.json in generator
start new project
ensure everything goes ok
I'm not sure this is the best way though...

Dealing with a large c++ library in a Rails deployment

I have a Rails project that is going to be using OpenCV, and it depends on a certain version of it (2.4.6.1).
I'm looking for deployment advice. The Ubuntu opencv package is an earlier version and therefore not suitable.
I can see a number of possibilities, but I'm trying to think of what will work best.
Just write it up in a README and expect people to follow it: download this, apt-get that, etc...
Add opencv, tagged at the version we need, as a git subtree, and include a Rake task to build it.
Write a script to download and compile the needed code.
Something else ?
None of them seem all that great, to tell the truth.
Can your application be made to work with OpenCV 2.4.2? That is available in Ubuntu 13.04, and you could request it be backported to 12.04. If not, you could update the source package to 2.4.6.1 (which would require learning about debian packaging but might not be too difficult since you would be modifying an existing package instead of starting from scratch), upload it to a PPA, and instruct your users on Ubuntu to install OpenCV from there. You could also package your rails application and put it in the PPA, which would make overall installation even easier.

Grails extension in SpringSource Tool Suite errors

I recently installed SpringSource Tool Suite. And I want to start working with Grails projects. So, I went to the Dashboard -> Extension, where I saw two extensions: Grails (current production release) and Grails Support as in the image below.
But when I try to install them, I get the following errors :
Problems occurred while performing installation: Operation details
Operation details
Cannot complete the install because one or more required items could not be found.
Software currently installed: Shared profile 1.0.0.1340820181092 (SharedProfile_com.springsource.sts.ide 1.0.0.1340820181092)
Missing requirement: Shared profile 1.0.0.1340820181092 (SharedProfile_com.springsource.sts.ide 1.0.0.1340820181092) requires 'org.maven.ide.eclipse [1.0.100.20110804-1717]' but it could not be found
What can I do to resolve this error ? Or are there any other options I can follow to install Grails extension?
Thank you!
I would switch to the new "Groovy/Grails Tool Suite" that was recently announced (see http://www.springsource.org/node/3582). Go to the standard download page at http://www.springsource.org/downloads/sts and click "Other Downloads >". Download the version for your OS under "Milestone Version - Groovy/Grails Tool Suite 3.0.0.M2".
It is a beta/milestone release but I've been using it since it was released and it's as stable as a final release so far. It's convenient since the Groovy-Eclipse plugin and the Grails support are already configured for you, in addition to the latest Grails (2.0.4). Any other plugins that you need from the standard STS can always be installed using the standard install/update procedure.
Yes, what #BurtBeckwith said. You should move to the new GGTS.
However, to address your particular problem, you installed STS into a read-only directory (or in C:\Program files). You need to re-install it somewhere else.
The Eclipse p2 installer cannot handle installing feature patches into a read-only directory. Groovy-Eclipse ships with a feature patch to extend the JDT compiler. I believe that this problem was fixed in the Juno release of Eclipse (4.2), which came out last week.
Deleting corresponding application from Windows memory removed the problem (Grails extension in SpringSource Tool Suite errors). Double running applications (earlier and new) could also be reason why GGS or STS sometimes cannot save .groovy files (with error message or without).

How to update plugins version (of a rails project) when old version had manual changes

How to update many plugins version when old plugin's version had manual changes in project?
Is there any tool available for doing this?
or tell proper method for updating ruby plugin version if some plugins may have manual changes done before in the older plugin's version.
Best method when a plugin is required or preferred *might be to copy out the old plugin to a dummy directory for reviewing later, then
uninstall the plugin, (script/plugin uninstall plugin_name)
install the old (but unmodified version) plugin (script/plugin install plugin_name_source_address) - likely either from rubyforge or github
review against the saved version you put in the dummy directory using an editor capable of differential display (that is, which allows you to compare two files for variations. Notepad++ is one freebie that will do this, but there are a ton of editors that allow diff views)
(this may or may not be something you can script. idk. I'm not that good, but I don't know of a tool that will do it all for you)
do another uninstall on the plugin to clear it out, since it's job is done,
install the new version of the plugin (script/plugin install plugin_name_source_address)
and finally edit the new plugin as necessary to accommodate any customization that was performed by you or some third party to the original utility.
I say as necessary because some of the customizations may not even be required in the newer version, although I can't say for sure...
finally, once all your patches are re-added to the new plugin and it's been tested and verified, either delete the dummy directory or archive it for future reference.
See, and I didn't even cop out with a bundler answer. You DID ask for assistance with a plugin, right? ;)
I'm not quite following you, but surely but that's what the Gemfile is for?
Take a look at Bundler
Try to run "$gem install rails"(it will install the newer version of rails) and then install watever the gem it asks finally run "$bundle install"

Resources