I have a website which need a mobile version.
I decided to use Sencha Touch 2.1 to create it.
I found the following Gem but it is clearly outdated.
So my question is do you know an easy way to integrate Sencha Touch with Rails Assets Pipeline?
The fact that the app needs to be built made me put it in the public directory for now.
Thanks.
I do not think Sencha Touch is a good use case in this scenario.
For a mobile version of a web application I would recommend switching to a framework with a responsive grid system such as Zurb foundation or Twitter bootstrap.
If you are still insisting on using Sencha Touch I would recommend creating a subdomain, such as http://mobile.domain.com and then serving the static files from something like S3, you can then use Sencha Touch to consume your Rails API.
Related
I haven't done any work building mobile apps with Rails, but I followed the very informative RailsConf demo from Sam Stephenson on Turbolinks 5 as a tool for building cross platform Apps with rails, Turbolinks 5 Demo and it looks great. The only part I can't replicate is how to get the "Turbolinks.framework" file that needs to be embedded in the iOS app shell.
The documentation at github's Turbolinks-ios page refers to a number of package managers for iOS (Carthage and CocoaPods) with which I am unfamiliar, or alternatively suggests "building Turbolinks manually and linking to my project." I think he demos the linking part, but no idea how to "build Turbolinks manually". Can someone give me a clue?
I have never done straight development like that. But I have done something different using Rails.
All you need is creating React-Native app web view implemented and pass url to rails pages (make sure rails app supports mobile responsive css). Including there you can benefit turbolinks events. It will save your precious time, and also, faster development!
Turned out to be very straightforward to install cocoapods and then use that to install Turbolinks-ios as mentioned on the git hub page.
I wanted to try out Angularjs. However, I have been trouble deciding on where I should located my angular app.
I am using Rails framework for the backend. I have seen tutorials where the entire angular app lives under the assets/javascript folder.
I was wondering if instead of living within the assets/javascript folder, I could make it live outside my rails directory entirely. That way, I can potentially separate my backend and front end entirely. (Is this recommended?).
I believe the asset pipeline also precompiles a lot of the assets. If I were to separate out the angularjs asset, would I need to precompile the assets somehow?
Thanks
I've been working through a similar set of questions. There are some good tools that allow you to integrate AngularJS directly into your rails asset pipeline, and they to me look good if you want just a little bit of Angular.
However, if you want a full Angular front-end, aka a single page web app, I think you'll eventually be limited by compatibility and some of the tooling. I feel like the Rails gems won't quite keep up with Angular, and so you'll be into version conflicts. I've also seen more and more tooling for Angular as a standalone, and I very much like the ng-boilerplate project template. I also like much of the testing tooling such as karma, and I haven't really sorted out a way to integrate karma with rails.
For that reason, I eventually decided that I'd keep the two separate. Initially, I did that through creating a rails application and a separate angular application (separate directories). I used ng-boilerplate as the framework for the angular end. I wrote a tutorial on that. This eventually got a bit frustrating, and I wrote some more thoughts on it, the main annoyance was that I had two git repositories and it was annoying to keep them in synch. It's also sort of annoying working with an IDE across two directories. I've ended up shifting to rails and angular being in the same folder, and they seem to play nice, as each uses different directories within that project.
In this current structure, I'm using the grunt setup that came with ng-boilerplate to minify all the code, package it and also run karma unit testing. I haven't yet nailed the end-to-end testing, but it's on my list. I've found this to be a relatively productive work environment. My chosen structure for my pages, controllers and karma test cases has some repeated code (I'm choosing not to factor it out to maintain readability). I'm planning to extend the rails scaffold generator to create the javascript framework for me - so when I create a persons rails scaffold, it will also create a persons angularjs scaffold for me. I'll update here if and when I do that work.
EDIT: I've completed the scaffolding work as well, which allows rails to automatically generate the angularJS elements when you generate the rails models/controllers etc. The blog post is here: http://technpol.wordpress.com/2013/09/24/rails-generator-to-generate-angular-views/
You could use a grunt based workflow:
How to manage AngularJS workflow with lots of script files
http://newtriks.com/2013/06/11/automating-angularjs-with-yeoman-grunt-and-bower/
If you start with a decoupled frontend, use mocks at first so you can stay within angular and not lose focus switching between backend and frontend logic. An advantage of building a single page application is that you can develop it independently of the backend api. See (http://docs.angularjs.org/api/ngMockE2E.$httpBackend) for information about mocking http responses.
We have been using AngularJS with our Rails application, in a way where we have been using Rails ERB templates, but switch over to using ng directive as and when required.
For this above setup we have used bower/bower-rails gem, which lets us use bower to manage the angular packages and their dependencies. We commit this into our repo, in the javascripts directory, and is taken care of by the Rails asset pipeline.
This setup has worked well for us considering we have above 50-50 % split of our views between the ERB templates and Angularjs.
More about this setup in the links below:
http://angular-rails.com/bootstrap.html
http://pete-hamilton.co.uk/2013/07/13/angularjs-and-rails-with-bower/
http://start.jcolemorrison.com/setting-up-an-angularjs-and-rails-4-1-project/
There are many advantages of separating out your api service (rails in this case) and your frontend components. As we do for ios/android apps, angular client can live on its own as a separate entity. It will be a static website that can be deployed on s3 or any static website host. It just needs to communicate with your api service. You could setup CORS to make it possible.
Some advantages of this workflow
You could use rails-api, which is a subset of rails application. If you are just going to use rails to build apis, it doesnt make sense to have all functionality that a complete rails app provides. Its lightweight, faster and inclined more towards building API first arch than a MVC arch.
You could use yeoman angular-generator to generate an angular app and make the most of grunt & bower to manage build (concat,uglify,cdnify etc) and dependencies (angular modules).
Deployments will become flexible. You won't need to depend on one to push the other.
If you ever plan to change your backend stack (eg rails to play/revel), you would not need to worry about your client components.
By splitting the development of the frontend and the Rails backend you could distribute the work over two development teams and keep the application as a whole very extensible.
There is also one downside to this approach.
By having the applications in two separate repositories, you can’t easily have a full integration test. So you will have to test the apps separately. You could mock your apis to test angular app.
We have been using this approach and would recommend others the same.
Less dependency & more productivity.
i have a rails application using PaperClip with CKEditor version 3.7.
i would like to enable upload of images from the local file system. i see i can use FCKEditor but all i can see is it's applicable for PHP and ASP.Net.
is that another option or do i need to do custom integration?
You can integrate elfinder into ckeditor.
http://elfinder.org/
https://github.com/Studio-42/elFinder/wiki/Integration-with-CKEditor
https://github.com/phallstrom/el_finder
https://github.com/phallstrom/el_finder-rails-example
Disclaimer - I wrote the Rails connector. It's meant for 1.x elfinder, but will work with 2.x using the translater (not everything is supported yet though). I'm working on pure 2.x support now.
I want to use Phonegap for create light cellular version of my site.
Is there any way to save all my HTML`s and assets (after merge all the partials, create the entire assets pipeline items and convert haml and coffees to html and javascript)?
I want to use Rails for writing my client side code and save it.
Thanks!
It depends on the site - if it is mostly static content it should work, but any user interaction will need to be built knowing that the server won't be there when the app runs. Using rails as a compiler for something designed as a phonegap app will work a lot better than trying to package an existing website.
Actually generating the static site is easy enough though:
wget -m -nH www.example.com
How am I supposed to use bootstap with rails 3.0 rather than >= 3.1 ? is there any plugin which supports rails 3.0 ?
I think all of the bootstrap gems require Rails 3.1 or greater. I recently had bootstrap on a 3.0.10 Rails app using the Less.js file that you download from their site: http://lesscss.org/. This is the simplest most basic way to use Twitter-Bootstrap; the file compiles all of your "my_file.less" files into css on the client side.
However, if you want to modify the variables (which is the real power of using this framework) than you need to compile it. You can take a look at this Less compiler: http://wearekiss.com/simpless. I've never tried that, but I hear good things about it and it works on Mac, Linux, or PC.
Probably the easiest thing to do - if you want to compile the code on server side - would be to upgrade your project to Rails 3.1.1 and just use one of the Twitter Bootstrap gems. This is actually exactly what I ended up doing. I was able to update my app to 3.1.1 and I used the Boostrap-Sass gem (just because I slightly prefer Sass).
If you decide to upgrade, follow this RailsCast: http://railscasts.com/episodes/282-upgrading-to-rails-3-1
It helped me a lot.
Ryan Bates also offers a video on how to incorporate Twitter Bootstrap into a Rails app: http://railscasts.com/episodes/328-twitter-bootstrap-basics.
Here's a link to the Sass version of Bootstrap that I am currently using: https://github.com/thomas-mcdonald/bootstrap-sass
Many solutions : you can upgrade to rails 3.1+, might be the better (not the easier, depending on you app) way. You can include the static files yourself if you don't intend to change anything that is handled at the less level. You can do it even if you intend to, but you'll have to recompile the files yourself (or find a way to automate it). Finally, there might be a gem out there that is compatible with rails pre-asset-pipeline, or an old version of a gem. You'll have to look for yourself if you absolutely want a gem.