Rails & PHP

I am inheriting a legacy PHP website and I want to add a few Rails
pages.

Is there anyone who can recommend some info on how to add RoR to a
PHP-driven website?

Ralph S.

On Apr 6, 2012, at 3:53 PM, Ralph S. wrote:

I am inheriting a legacy PHP website and I want to add a few Rails pages.

Is there anyone who can recommend some info on how to add RoR to a PHP-driven
website?

I’ve never tried this, but if you’re using Passenger, it seems likely
that you could add the handler directive to your Apache configuration
(or maybe it would inherit the php handler stuff if the server can
already host php by default) and then put the entire PHP site in the
public folder. Just make sure that you don’t clobber any of your routes,
and it should work fine. If you’re not hitting the same database with
PHP and Rails, you could possibly get away with as little as that.

Walter

Yea, I would even consider keeping the existing PHP app at “www.xyz.com
and making your Rails app “services.xyz.com” or something like that

But Walter’s hack might work. Alternatively there’s some fancy
mod_rewrite I’m sure apache will do to direct request to the right app.

But consider that PHP and Rails are mostly different technologies and
you should have no expectation that they will work “together” – what
you’re trying to do is a hack and probably should only be done if
absolutely necessary and/or as a band-aid fix.

On Fri, Apr 6, 2012 at 4:53 PM, Ralph S. [email protected] wrote:

I am inheriting a legacy PHP website and I want to add a few Rails pages.

Is there anyone who can recommend some info on how to add RoR to a PHP-driven
website?

At the risk of going Off Topic, I would ask why on earth would you do
that?
I think that’s a terrible idea. Debugging and maintenance WILL hurt
you. Not to mention that every somebody does that kind of things a
baby Panda dies.


Leonardo M…
There’s no place like ~

PHP + Ruby = Phuby =)

2012/4/6 Ralph S. [email protected]

mod_rewrite I’m sure apache will do to direct request to the right app.

that you could add the handler directive to your Apache configuration (or
Groups “Ruby on Rails: Talk” group.


Fernando A.

Jason,

Friday, April 6, 2012, 2:18:53 PM, you wrote:

JFB> Yea, I would even consider keeping the existing PHP app at
www.xyz.com” and making your Rails app “services.xyz.com” or something
like that

JFB> But Walter’s hack might work. Alternatively there’s some fancy
mod_rewrite I’m sure apache will do to direct request to the right app.

JFB> But consider that PHP and Rails are mostly different technologies
and you should have no expectation that they will work “together” –
what you’re trying to do is a hack and probably should only be done if
absolutely necessary and/or as a band-aid fix.

JFB> On Apr 6, 2012, at 4:14 PM, Walter Lee D. wrote:


You received this message because you are subscribed to the Google G. “Ruby
on Rails: Talk” group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.

What a simple and wonderful idea! Thanks!!!

Ralph S.

On Friday, 6 April 2012 15:53:13 UTC-4, RalphShnelvar wrote:

I am inheriting a legacy PHP website and I want to add a few Rails pages.

Is there anyone who can recommend some info on how to add RoR to a
PHP-driven website?

Ralph S.

Depends on what you mean by “PHP-driven” - if it’s doing its own URL
rewriting (Wordpress’s clean URLs, for instance) you’re probably best
served putting the Rails stuff on a subdomain or in a subdirectory.

On the other hand, if it’s a plain PHP site where URLs just end in .php
everywhere, you can do some mod_rewrite magic (tune the paths as
appropriate):

RewriteCond /home/web/public_html/%{REQUEST_URI} -f
RewriteRule ^(.) /home/web/public_html/$1 [QSA,L]
RewriteCond /home/web/public_html/%{REQUEST_URI}/index.php -f
RewriteRule ^(.
) /home/web/public_html/$1/index.php [QSA,L]

Then point your DocumentRoot to the public dir in your Rails app, as
Passenger’s instructions indicate, and add this:

<Directory /home/web/public_html>
PassengerEngine off

to the Apache config as well, to avoid confusing Passenger with stuff in
PHP-land. The result will be that any incoming URL which matches either
an
actual PHP file, or a directory with an index.php file will be handled
by
PHP, while everything else goes to the Rails app.

One other thing - for additional integration, you may want to access the
PHP session from the Rails app. (Going the other way is NOT recommended,
as
you’d need to be able to un-Marshal Ruby objects in PHP) To do this,
you’ll
need a gem like php-serialize (GitHub - jqr/php-serialize: Use PHP's serialization methods from Ruby.) and
you’ll need to find where your particular PHP installation stores
session
data - sometimes this is in /tmp, sometimes elsewhere. The files are
typically named after the session token (found in “cookies[‘PHPSESSID’]”
in
your controllers). PHP does some locking to avoid multiple writers
messing
the whole thing up, but I’ve only ever needed to read from the PHP
session, so I’m not sure exactly how that works.

Hope this helps!

–Matt J.

Re: [Rails] Re: Rails & PHP

Matt,


Saturday, April 7, 2012, 1:43:46 PM, you wrote:





On Friday, 6 April 2012 15:53:13 UTC-4, RalphShnelvar wrote:

I am inheriting a legacy PHP website and I want to add a few Rails pages.

Is there anyone who can recommend some info on how to add RoR to a PHP-driven website?

Ralph S.


Depends on what you mean by "PHP-driven" - if it's doing its own URL rewriting (Wordpress's clean URLs, for instance) you're probably best served putting the Rails stuff on a subdomain or in a subdirectory.


On the other hand, if it's a plain PHP site where URLs just end in .php everywhere, you can do some mod_rewrite magic (tune the paths as appropriate):


  RewriteCond /home/web/public_html/%{REQUEST_URI} -f

  RewriteRule ^(.*) /home/web/public_html/$1 [QSA,L]

  RewriteCond /home/web/public_html/%{REQUEST_URI}/index.php -f

  RewriteRule ^(.*) /home/web/public_html/$1/index.php [QSA,L]


Then point your DocumentRoot to the public dir in your Rails app, as Passenger's instructions indicate, and add this:


  <Directory /home/web/public_html>

    PassengerEngine off

   </Directory>


to the Apache config as well, to avoid confusing Passenger with stuff in PHP-land. The result will be that any incoming URL which matches either an actual PHP file, or a directory with an index.php file will be handled by PHP, while everything else goes to the Rails app.


One other thing - for additional integration, you may want to access the PHP session from the Rails app. (Going the other way is NOT recommended, as you'd need to be able to un-Marshal Ruby objects in PHP) To do this, you'll need a gem like php-serialize (https://github.com/jqr/php-serialize) and you'll need to find where your particular PHP installation stores session data - sometimes this is in /tmp, sometimes elsewhere. The files are typically named after the session token (found in "cookies['PHPSESSID']" in your controllers). PHP does some locking to avoid multiple writers messing the whole thing up, but I've only ever needed to *read* from the PHP session, so I'm not sure exactly how that works.


Hope this helps!


--Matt J.

-- 

You received this message because you are subscribed to the Google G. "Ruby on Rails: Talk" group.

To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/FAV9sfY553sJ.

To post to this group, send email to [email protected].

To unsubscribe from this group, send email to [email protected].

For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.


This is way over my head although I have some glimpses of understanding.


I thank you for taking the time to write all this tuff.  I'll save it and cogitate when I know a lot more.



-- 

Best regards,

 Ralph                            mailto:[email protected]



You received this message because you are subscribed to the Google
Groups “Ruby on Rails: Talk” group.

To post to this group, send email to
[email protected].

To unsubscribe from this group, send email to
[email protected].

For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.